西湖鱼 发表于 2018-1-3 16:07:06

saltstack学习

#!/bin/bash  
# must be
2 args  

if [ $# -lt 2 ];then  
echo "usage $0 master_name num_of_minion"
  
exit
  
fi
  

  
name=$1
  
master_name='master__'$name
  

  
# check the container name
  
cname=$(docker ps -a| grep $master_name$ | awk '{print $NF}')
  
cid=$(docker ps -a| grep $master_$name$ | awk '{print $1}')
  
if [ "$cname" = "$master_name" ];then

  
echo "contain name $name exist,>  
exit
  
fi
  

  
# the 2nd arg must be digit
  
if [ "$2" -gt 0 ] 2>/dev/null;then
  
echo "there will be create $2 minion."
  
num=$2
  
else
  
echo "usage $0 master_name num_of_minion"
  
echo "$2 is not a number"
  
exit
  
fi
  

  
# create master
  
mkdir -p /docker/cluster/$name/master/master.d
  
cp /docker/Docker/salt\ master/master.conf /docker/cluster/$name/master/master.d/master.conf
  
msg=$(docker run -d --name=$master_name -v /docker/cluster/$name/master/master.d:/etc/salt/master.d salt/master)
  

  
# check if container is create success
  
mcid=$(docker ps| grep $master_name$ | awk '{print $1}')
  
if [ -z $mcid ];then
  
echo "master create faild!"
  
exit
  
fi
  

  
master_ip=$(docker exec -it $mcid ip a | grep "global eth0" | awk '{print $2}' | awk -F '/' '{print $1}')
  
if [ -z $master_ip ];then

  
echo "could not find master ip in container,>  
exit
  
fi
  
echo "master ip is $master_ip"
  

  
#create minion
  
for i in `seq $num`; do
  
minion_name='node__'${name}'__'${i}
  
mkdir -p /docker/cluster/$name/node$i/minion.d
  
cp /docker/Docker/salt\ minion/minion.conf /docker/cluster/$name/node$i/minion.d/minion.conf
  
sed -i -e 's/id: minion-vm1/id: minion-'${minion_name}'/' /docker/cluster/$name/node$i/minion.d/minion.conf
  
sed -i -e 's/master: 172.17.0.2/master: '"${master_ip}"'/' /docker/cluster/$name/node$i/minion.d/minion.conf
  
cid=$(docker run -d --name=$minion_name -v /docker/cluster/$name/node$i/minion.d:/etc/salt/minion.d salt/minion)
  

  
# check if container is create success
  
cid=$(docker ps| grep $minion_name$ | awk '{print $1}')
  
if [ -z $cid ];then
  
echo "node$i create faild!"
  
exit
  
fi
  
done
  

  
# show the result
  
x='#'
  
echo "docker exec -it $mcid salt-key -L"
  
minion_name="minion-$minion_name"
  
for i in `seq 100`; do
  
printf "starting:[%-100s]%d%%\r" $x $i
  
x=#$x
  
node=$(docker exec -it $mcid salt-key -L | grep $minion_name)
  
if [ -n "$node" ];then
  
break
  
fi
  
sleep 5
  
done
  

  
if [ $i -le 100 ];then
  
while [ $i -le 100 ]; do
  
printf "starting:[%-100s]%d%%\r" $x $i
  
x=#$x
  
i=$(($i+1))
  
done
  
fi
  
printf "\n"
  
if [ -n "$node" ];then
  
echo "create cluster success"
  
else
  
echo "please check manually with command:\ndocker exec -it $mcid salt-key -L"
  
fi
  
页: [1]
查看完整版本: saltstack学习