From c6fb12c816c945bf4ba1646bd3359e0d6f683e87 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Fri, 11 May 2018 17:03:42 +0200 Subject: [PATCH] Adding the script --- postservice/90-redis-init | 84 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 postservice/90-redis-init diff --git a/postservice/90-redis-init b/postservice/90-redis-init new file mode 100755 index 0000000..1c82747 --- /dev/null +++ b/postservice/90-redis-init @@ -0,0 +1,84 @@ +#!/bin/bash + +# +# Cluster init ! +# + +function redisRun() +{ + cmd="redis-cli" + host=$1 + shift + port=$1 + shift + pass=$1 + shift + + opt="-h ${host} -p ${port} -a ${pass}" + act=${@} + ${cmd} ${opt} ${act} + return ${?} +} + +function getNodeID() +{ + searchCmd="awk '/${1}/ { print \$1 }'" + redisRun $1 $2 $3 cluster nodes | eval ${searchCmd} + return ${?} +} + +#CONF="/etc/redis/cluster.conf" +CONF=/tmp/cluster.conf + +[[ ! -e ${CONF} ]] && exit 0 + +declare -A IPADDRS +declare -A PORTS +declare -A ROLES +declare -A MASTERS +declare -A NIDS +index=0 +CLPASS=$(CreoleGet redisMasterPassword) + +while read line +do + line=${line//::/:none:} + li=(${line//:/ }) + + name=${li[0]} + ip=${li[1]} + port=${li[2]} + role=${li[3]} + master=${li[4]} + + NAMES+=(${name}) + IPADDRS+=([${name}]=${ip}) + PORTS+=([${name}]=${port}) + ROLES+=([${name}]=${role}) + MASTERS+=([${name}]=${master}) +done < ${CONF} + +echo "Organise Cluster Meeting !" +echo ${NAMES[@]} +for node in ${NAMES[@]} +do + echo $node + [[ ${IPADDRS[$node]} == "127.0.0.1" ]] && continue + act="cluster meet ${IPADDRS[${node}]} ${PORTS[${node}]}" + echo redisRun ${act} +done + +echo "Setup Master and pass" +NIDS+=() +for node in ${NAMES[@]} +do + NIDS+=([${node}]=$(getNodeID ${IPADDRS[leader]} ${PORTS[leader]} ${CLPASS} ${PORTS[${node}]})) +done + +for node in ${NAMES[@]} +do + [[ ${ROLES[$node]} == "master" ]] && continue + MASTERIP= + echo "redis-cli -h ${IPADDRS[${node}]} -p ${PORTS[${node}]} cluster replicate ${NIDS[${node}]}" +done +