Last active
April 1, 2019 22:28
-
-
Save lilithmooncohen/65346985c99cdc469d96 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| #!/bin/bash | |
| # Description: This script spins up a multi node Docker Swarm w/ Docker | |
| # Networking and Consul discovery w/ Registrator | |
| # Author: Ryan C Koch | |
| # [email protected] | |
| # Usage: bash docker-playground.sh usage | |
| usage () | |
| { | |
| echo "Usage: $0 [argument]" | |
| echo | |
| echo "[argument]: create" | |
| echo " start" | |
| echo " status" | |
| echo " stop" | |
| echo " destroy" | |
| } | |
| create () | |
| { | |
| echo "##### STARTING LOCAL-SERVICE-EMULATOR #####" | |
| echo "### STARTING NODE docker-playground-consul ###" && \ | |
| docker-machine create -d virtualbox docker-playground-consul && \ | |
| echo "### STARTING SERVICES ON docker-playground-consul ###" && \ | |
| docker $(docker-machine config docker-playground-consul) run -d \ | |
| --net=host \ | |
| --name=consul-server \ | |
| --restart=always \ | |
| -p 8300:8300 \ | |
| -p 8301:8301 \ | |
| -p 8301:8301/udp \ | |
| -p 8302:8302 \ | |
| -p 8302:8302/udp \ | |
| -p 8400:8400 \ | |
| -p 8500:8500 \ | |
| -p 8600:53/udp \ | |
| progrium/consul \ | |
| -dc=local \ | |
| -server -advertise $(docker-machine ip docker-playground-consul) \ | |
| -bootstrap-expect 1 && \ | |
| docker $(docker-machine config docker-playground-consul) run -d \ | |
| --name=registrator \ | |
| --restart=always \ | |
| -e SERVICE_NAME=registrator \ | |
| -v /var/run/docker.sock:/tmp/docker.sock \ | |
| gliderlabs/registrator:master \ | |
| consul://$(docker-machine ip docker-playground-consul):8500 && \ | |
| echo "### STARTING NODE docker-playground-swarm1 ###" && \ | |
| docker-machine create -d virtualbox \ | |
| --swarm --swarm-image="swarm" --swarm-master \ | |
| --swarm-discovery="consul://$(docker-machine ip docker-playground-consul):8500" \ | |
| --engine-opt="cluster-store=consul://$(docker-machine ip docker-playground-consul):8500" \ | |
| --engine-opt="cluster-advertise=eth1:2376" \ | |
| docker-playground-swarm1 && \ | |
| echo "### STARTING SERVICES ON docker-playground-swarm1 ###" && \ | |
| docker $(docker-machine config docker-playground-swarm1) run -d \ | |
| --name consul-client \ | |
| --net=host \ | |
| --restart=always \ | |
| -e SERVICE_NAME=consul-client \ | |
| -p 8300:8300 \ | |
| -p 8301:8301 \ | |
| -p 8301:8301/udp \ | |
| -p 8302:8302 \ | |
| -p 8302:8302/udp \ | |
| -p 8400:8400 \ | |
| -p 8500:8500 \ | |
| -p 53:53 \ | |
| -p 53:53/udp \ | |
| progrium/consul \ | |
| -dc=local \ | |
| -advertise $(docker-machine ip docker-playground-swarm1) -join $(docker-machine ip docker-playground-consul) && \ | |
| docker $(docker-machine config docker-playground-swarm1) run -d \ | |
| --name=registrator \ | |
| --restart=always \ | |
| -e SERVICE_NAME=registrator \ | |
| -v /var/run/docker.sock:/tmp/docker.sock \ | |
| gliderlabs/registrator:master \ | |
| consul://$(docker-machine ip docker-playground-swarm1):8500 && \ | |
| echo "### STARTING NODE docker-playground-swarm2 ###" && \ | |
| docker-machine create -d virtualbox \ | |
| --swarm --swarm-image="swarm" \ | |
| --swarm-discovery="consul://$(docker-machine ip docker-playground-consul):8500" \ | |
| --engine-opt="cluster-store=consul://$(docker-machine ip docker-playground-consul):8500" \ | |
| --engine-opt="cluster-advertise=eth1:2376" \ | |
| docker-playground-swarm2 && \ | |
| echo "### STARTING SERVICES ON docker-playground-swarm2 ###" && \ | |
| docker $(docker-machine config docker-playground-swarm2) run -d \ | |
| --name consul-client \ | |
| --net=host \ | |
| --restart=always \ | |
| -e SERVICE_NAME=consul-client \ | |
| -p 8300:8300 \ | |
| -p 8301:8301 \ | |
| -p 8301:8301/udp \ | |
| -p 8302:8302 \ | |
| -p 8302:8302/udp \ | |
| -p 8400:8400 \ | |
| -p 8500:8500 \ | |
| -p 53:53 \ | |
| -p 53:53/udp \ | |
| progrium/consul \ | |
| -dc=local \ | |
| -advertise $(docker-machine ip docker-playground-swarm2) -join $(docker-machine ip docker-playground-consul) && \ | |
| docker $(docker-machine config docker-playground-swarm2) run -d \ | |
| --name=registrator \ | |
| --restart=always \ | |
| -e SERVICE_NAME=registrator \ | |
| -v /var/run/docker.sock:/tmp/docker.sock \ | |
| gliderlabs/registrator:master \ | |
| consul://$(docker-machine ip docker-playground-swarm2):8500 && \ | |
| echo "##### LOCAL-SERVICE-EMULATOR STARTED #####" | |
| } | |
| start () | |
| { | |
| docker-machine start docker-playground-consul docker-playground-swarm1 docker-playground-swarm2 | |
| } | |
| stop () | |
| { | |
| docker-machine stop docker-playground-consul | |
| docker-machine stop docker-playground-swarm1 | |
| docker-machine stop docker-playground-swarm2 | |
| } | |
| status () | |
| { | |
| docker-machine ls | grep docker-playground | |
| } | |
| destroy () | |
| { | |
| stop | |
| docker-machine rm docker-playground-consul | |
| docker-machine rm docker-playground-swarm1 | |
| docker-machine rm docker-playground-swarm2 | |
| } | |
| details () | |
| { | |
| echo "consul: http://$(docker-machine ip docker-playground-consul):8500" && \ | |
| echo "swarm: tcp://$(docker-machine ip docker-playground-swarm1):3376" && \ | |
| echo && \ | |
| echo "To connect to the swarm run:" && \ | |
| echo 'eval $(docker-machine env --swarm docker-playground-swarm1)' | |
| } | |
| case "$1" in | |
| create) | |
| create | |
| details | |
| ;; | |
| start) | |
| start | |
| details | |
| ;; | |
| stop) | |
| stop | |
| ;; | |
| status) | |
| status | |
| details | |
| ;; | |
| destroy) | |
| stop | |
| destroy | |
| ;; | |
| *) | |
| usage | |
| esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment