Created
May 29, 2016 18:46
-
-
Save rlespinasse/77a5e2b79eca2f790e3b0bf594cd4096 to your computer and use it in GitHub Desktop.
swarm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -e | |
listSwarms() { | |
ls ~/.horde | |
} | |
initSwarm() { | |
mkdir -p ~/.horde/$1 | |
docker run --rm swarm create > ~/.horde/$1/token.log | |
} | |
createSwarmMaster() { | |
TOKEN=$(head -n 1 ~/.horde/$1/token.log) | |
docker-machine create -d virtualbox --swarm-master --swarm-discovery token://$TOKEN $1-master | |
} | |
createSwarmAgents() { | |
AGENTS=$2 | |
TOKEN=$(head -n 1 ~/.horde/$1/token.log) | |
for ((i=1; i<=AGENTS; i++)); do | |
docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN $1-agent-$i | |
pids[${i}]=$! | |
done; | |
for pid in ${pids[*]}; do | |
wait $pid; | |
done; | |
} | |
infoSwarm() { | |
docker-machine ls --filter swarm=$1-master | |
} | |
envSwarm() { | |
eval $(docker-machine env --swarm $1-master) | |
docker info | |
infoSwarm $1 | |
} | |
startSwarm() { | |
docker-machine start $(docker-machine ls -q --filter swarm=$1-master) | |
} | |
stopSwarm() { | |
docker-machine stop $(docker-machine ls -q --filter swarm=$1-master) | |
} | |
rmSwarm() { | |
docker-machine rm -f -y $(docker-machine ls -q --filter swarm=$1-master) | |
rm -rf ~/.horde/$1 | |
} | |
case "$1" in | |
create) | |
initSwarm $2 | |
createSwarmMaster $2 | |
createSwarmAgents $2 $3 | |
envSwarm $2 | |
;; | |
start) | |
startSwarm $2 | |
;; | |
stop) | |
stopSwarm $2 | |
;; | |
rm|destroy) | |
stopSwarm $2 | |
rmSwarm $2 | |
;; | |
swarm|env|load) | |
envSwarm $2 | |
;; | |
info) | |
infoSwarm $2 | |
;; | |
ls) | |
listSwarms | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment