Repository navigation
Expand file tree
/
Copy pathinitDockerClusterLoopJoin.sh
More file actions
executable file
·82 lines (68 loc) · 2.96 KB
/
Copy pathinitDockerClusterLoopJoin.sh
File metadata and controls
executable file
·82 lines (68 loc) · 2.96 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash
# echo every command
set -o xtrace
# exit when error
set -e
# Causes a pipeline to return the exit status of the last command in the pipe that returned a non-zero return value.
set -o pipefail
nodeName=("node21" "node22" "node23" "node24" "node25")
macAddress=("52:54:00:4b:ab:21" "52:54:00:4b:ab:22" "52:54:00:4b:ab:23" "52:54:00:4b:ab:24" "52:54:00:4b:ab:25")
ip=("10.13.31.21" "10.13.31.22" "10.13.31.23" "10.13.31.24" "10.13.31.25")
tmpNetplanFile="tmp-10-custom.yaml"
# assume that you already built os image with packer build template.pkr.hcl
imageFile=file://$PWD/output-autogenerated_1/packer-autogenerated_1
# setup five node
for ((i=0 ; i < 5 ; i++)) ; do
multipass launch $imageFile --name ${nodeName[i]} --network name=localbr,mode=manual,mac="${macAddress[i]}" --cloud-init cloud-config.yaml
cat << EOF > $tmpNetplanFile
network:
version: 2
ethernets:
extra0:
dhcp4: no
match:
macaddress: "${macAddress[i]}"
addresses: [${ip[i]}/24]
EOF
multipass transfer $tmpNetplanFile ${nodeName[i]}:.
multipass exec -n ${nodeName[i]} -- sudo bash -c "sudo cp $tmpNetplanFile /etc/netplan/10-custom.yaml"
multipass exec -n ${nodeName[i]} -- sudo chmod go-rxw /etc/netplan/10-custom.yaml
multipass exec -n ${nodeName[i]} -- sudo netplan apply
done
multipass exec -n ${nodeName[0]} -- sudo docker swarm init --advertise-addr ${ip[0]}
for ((i=0 ; i < 4 ; i++)) ; do
multipass exec -n ${nodeName[i]} -- sudo docker swarm join-token manager
managerToken=$(multipass exec -n ${nodeName[i]} -- sudo docker swarm join-token manager -q)
multipass exec -n ${nodeName[i+1]} -- sudo docker swarm join --token $managerToken ${ip[i]}:2377
done
# finish setup five node
# delete node21 and recreate and join to node22
sleep 30s
multipass stop ${nodeName[0]}
multipass delete ${nodeName[0]}
multipass purge
sleep 30s
multipass exec -n ${nodeName[1]} -- sudo docker node demote ${nodeName[0]}
multipass exec -n ${nodeName[1]} -- sudo docker node rm ${nodeName[0]}
for ((i=0 ; i < 1 ; i++)) ; do
multipass launch $imageFile --name ${nodeName[i]} --network name=localbr,mode=manual,mac="${macAddress[i]}" --cloud-init cloud-config.yaml
cat << EOF > $tmpNetplanFile
network:
version: 2
ethernets:
extra0:
dhcp4: no
match:
macaddress: "${macAddress[i]}"
addresses: [${ip[i]}/24]
EOF
multipass transfer $tmpNetplanFile ${nodeName[i]}:.
multipass exec -n ${nodeName[i]} -- sudo bash -c "sudo cp $tmpNetplanFile /etc/netplan/10-custom.yaml"
multipass exec -n ${nodeName[i]} -- sudo chmod go-rxw /etc/netplan/10-custom.yaml
multipass exec -n ${nodeName[i]} -- sudo netplan apply
done
multipass exec -n ${nodeName[1]} -- sudo docker swarm join-token manager
managerToken=$(multipass exec -n ${nodeName[1]} -- sudo docker swarm join-token manager -q)
multipass exec -n ${nodeName[0]} -- sudo docker swarm join --token $managerToken ${ip[1]}:2377
# finish rejoin
rm $tmpNetplanFile