|
1 | 1 | #!/bin/bash
|
2 |
| -URL=https://github.com/boot2docker/boot2docker/releases/download/v1.12.0-rc2/boot2docker.iso |
3 | 2 |
|
4 |
| -# create swarm manager |
5 |
| -docker-machine create -d virtualbox --virtualbox-boot2docker-url $URL sw01 |
6 |
| -docker-machine ssh sw01 docker swarm init --listen-addr $(docker-machine ip sw01):2377 |
| 3 | +# Swarm mode using Docker Machine |
7 | 4 |
|
8 |
| -# create another swarm node |
9 |
| -docker-machine create -d virtualbox --virtualbox-boot2docker-url $URL sw02 |
10 |
| -docker-machine ssh sw02 docker swarm join --listen-addr $(docker-machine ip sw02):2377 $(docker-machine ip sw01):2377 |
| 5 | +managers=3 |
| 6 | +workers=3 |
| 7 | + |
| 8 | +# create manager machines |
| 9 | +echo "======> Creating $managers manager machines ..."; |
| 10 | +for node in $(seq 1 $managers); |
| 11 | +do |
| 12 | + echo "======> Creating manager$node machine ..."; |
| 13 | + docker-machine create -d virtualbox manager$node; |
| 14 | +done |
| 15 | + |
| 16 | +# create worker machines |
| 17 | +echo "======> Creating $workers worker machines ..."; |
| 18 | +for node in $(seq 1 $workers); |
| 19 | +do |
| 20 | + echo "======> Creating worker$node machine ..."; |
| 21 | + docker-machine create -d virtualbox worker$node; |
| 22 | +done |
| 23 | + |
| 24 | +# list all machines |
| 25 | +docker-machine ls |
| 26 | + |
| 27 | +# initialize swarm mode and create a manager |
| 28 | +echo "======> Initializing first swarm manager ..." |
| 29 | +docker-machine ssh manager1 "docker swarm init --listen-addr $(docker-machine ip manager1) --advertise-addr $(docker-machine ip manager1)" |
| 30 | + |
| 31 | +# get manager and worker tokens |
| 32 | +export manager_token=`docker-machine ssh manager1 "docker swarm join-token manager -q"` |
| 33 | +export worker_token=`docker-machine ssh manager1 "docker swarm join-token worker -q"` |
| 34 | + |
| 35 | +echo "manager_token: $manager_token" |
| 36 | +echo "worker_token: $worker_token" |
| 37 | + |
| 38 | +# other masters join swarm |
| 39 | +for node in $(seq 2 $managers); |
| 40 | +do |
| 41 | + echo "======> manager$node joining swarm as manager ..." |
| 42 | + docker-machine ssh manager$node \ |
| 43 | + "docker swarm join \ |
| 44 | + --token $manager_token \ |
| 45 | + --listen-addr $(docker-machine ip manager$node) \ |
| 46 | + --advertise-addr $(docker-machine ip manager$node) \ |
| 47 | + $(docker-machine ip manager1)" |
| 48 | +done |
| 49 | + |
| 50 | +# show members of swarm |
| 51 | +docker-machine ssh manager1 "docker node ls" |
| 52 | + |
| 53 | +# workers join swarm |
| 54 | +for node in $(seq 1 $workers); |
| 55 | +do |
| 56 | + echo "======> worker$node joining swarm as worker ..." |
| 57 | + docker-machine ssh worker$node \ |
| 58 | + "docker swarm join \ |
| 59 | + --token $worker_token \ |
| 60 | + --listen-addr $(docker-machine ip worker$node) \ |
| 61 | + --advertise-addr $(docker-machine ip worker$node) \ |
| 62 | + $(docker-machine ip manager1):2377" |
| 63 | +done |
| 64 | + |
| 65 | +# show members of swarm |
| 66 | +docker-machine ssh manager1 "docker node ls" |
| 67 | + |
| 68 | +# Cleanup |
| 69 | +# # Stop machines |
| 70 | +# docker-machine stop worker1 worker2 worker3 manager1 manager2 manager3 |
| 71 | + |
| 72 | +# # remove machines |
| 73 | +# docker-machine rm worker1 worker2 worker3 manager1 manager2 manager3 |
11 | 74 |
|
12 |
| -# list nodes |
13 |
| -docker-machine ssh sw01 docker node ls |
|
0 commit comments