diff --git a/dicos/90_redis.xml b/dicos/90_redis.xml index 5d1b8f7..7b657c6 100644 --- a/dicos/90_redis.xml +++ b/dicos/90_redis.xml @@ -43,8 +43,10 @@ Leader + + @@ -94,7 +96,8 @@ rdClmask - + + rdClMemberIP rdClMemberPort rdClMemberRole rdClMemberMaster diff --git a/postservice/91-redis-init b/postservice/91-redis-init new file mode 100755 index 0000000..d0ce85a --- /dev/null +++ b/postservice/91-redis-init @@ -0,0 +1,29 @@ +#!/bin/bash + +# +# Cluster init ! +# + +redisTrib="/usr/share/doc/redis-tools/examples/redis-trib.rb" +CONF="/etc/redis/cluster.conf" + +if [[ -f ${1} ]] +then + CONF=${1} +fi + +if [[ -f "${CONF}" ]] +then + LEADER=$(awk -F ':' '/^leader/ {print $2 ":" $3}' ${CONF}) + + REPLICA=$(${redisTrib} check ${LEADER} | awk '/additional replica/ {print $1}') + + if [[ ${REPLICA} -eq 0 ]] + then + # Create Cluster + yes yes | ${redisTrib} create --replicas 1 $(awk -F ':' '{printf "%s:%s ", $2, $3}' ${CONF}) + fi +else + echo "${CONF} is missing" + exit 0 +fi diff --git a/tmpl/redis-cluster.conf b/tmpl/redis-cluster.conf index 4589269..9d1d371 100644 --- a/tmpl/redis-cluster.conf +++ b/tmpl/redis-cluster.conf @@ -1,6 +1,6 @@ %if %%getVar('activer_redis','non') == 'oui' and %%getVar('redisRole','Node') == 'Leader' -127.0.0.1:%%{redisPort}:master:: -%for %%node in %%getVar('rdClMemberIP',[]) -%%{node}:%%{node.rdClMemberPort}:%%{node.rdClMemberRole}:%%{node.rdClMemberMaster} +Leader:127.0.0.1:%%{redisPort}:master:: +%for %%node in %%getVar('rdClMember',[]) +%%{node}:%%{node.rdClMemberIP}:%%{node.rdClMemberPort}:%%{node.rdClMemberRole}:%%{node.rdClMemberMaster}: %end for %end if