1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #!/bin/bash
ProjectName="{应用类型}" ServiceName="{workspaceNum}" envName="{envName}" gitName="{gitName}"
if [ -d /data/logs ];then rm -rf /data/logs fi [ -d /data/logs ] || { mkdir -p /data/logs }
rpm -qa | grep -q "jq" [ $? -ne 0 ] || { yum install -y jq } rpm -qa | grep -qE "^curl" [ $? -ne 0 ] || { yum install -y curl }
nodeStatus=$(docker info --format '{{json .Swarm}}' | jq '.LocalNodeState' | sed 's/\"//g') if [ "${nodeStatus}" == "inactive" ];then while true do docker swarm join --token {swarmToken} {swarmMaserIp}:2377 if [ $? -eq 0 ];then break fi sleep 1 done fi
hostIp=$(ip route | grep "default" | grep -oP '(?<=src )[0-9]{1,3}(\.[0-9]{1,3}){3}') nodeCode=$(hostname | grep -oP '(?<=Server)\d+') masterIp=$(docker info --format json | jq -r '.Swarm.RemoteManagers[0].Addr' | awk -F ":" '{print $1}') while true do httpCode=$(curl --connect-timeout 60 --max-time 180 -o /dev/null -w "%{http_code}" -X POST "http://${masterIp}:6666/create" -H "Content-Type: application/json" -d "{\"hostIp\":\"${hostIp}\", \"nodeCode\":\"${nodeCode}\", \"nodeHostname\":\"$(hostname)\", \"projectName\":\"${ProjectName}\", \"envName\":\"${envName}\", \"gitName\":\"${gitName}\"}") if [ ${httpCode} -ne 200 ];then sleep 2 continue else break fi done while true do docker ps | grep "${ProjectName}${nodeCode}" | grep "Up" | grep -q "healthy" if [ $? -eq 0 ];then break fi sleep 2 done exit 0
|