Last active
January 12, 2020 21:04
-
-
Save brettkrueger/f9e976c869c079229572a8a09fd5082d to your computer and use it in GitHub Desktop.
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
function create-swarm() { | |
alias dm="docker-machine" | |
alias dms="docker-machine ssh" | |
NODE_PREFIX=${1:0:1} | |
NODE_COUNT=${1:1:1} | |
MANAGER_PREFIX=${2:0:1} | |
MANAGER_COUNT=${2:1:1} | |
if [ -z ${NODE_PREFIX} ]; then NODE_PREFIX="n"; fi | |
if [ -z ${MANAGER_PREFIX} ]; then MANAGER_PREFIX="m"; fi | |
if [ -z ${NODE_COUNT} ]; then NODE_COUNT=3; fi | |
if [ -z ${MANAGER_COUNT} ]; then MANAGER_COUNT=1; fi | |
echo "[+] Creating ${NODE_COUNT} nodes with prefix ${NODE_PREFIX} and ${MANAGER_COUNT} managers with prefix ${MANAGER_PREFIX}" | |
echo "[+] Creating Managers" | |
for MANAGER in $(seq 1 ${MANAGER_COUNT}); do | |
MANAGER_NAME="${MANAGER_PREFIX}${MANAGER}" | |
echo "--> Creating MANAGER ${MANAGER_NAME}" | |
dm rm --force ${MANAGER_NAME} &>/dev/null | |
dm create --driver virtualbox ${MANAGER_NAME} &>/dev/null | |
dms ${MANAGER_NAME} tce-load -iw jq &>/dev/null | |
done; | |
echo "[+] Creating Nodes" | |
for NODE in $(seq 1 ${NODE_COUNT}); do | |
NODE_NAME="${NODE_PREFIX}${NODE}" | |
echo "--> Creating NODE ${NODE_NAME}" | |
dm rm --force ${NODE_NAME} &>/dev/null | |
dm create --driver virtualbox ${NODE_NAME} &>/dev/null | |
#dms ${NODE_NAME} tce-load -iw jq &>/dev/null | |
done; | |
echo "[+] Configuring Swarm" | |
export IP=$(docker-machine ip ${MANAGER_PREFIX}1) | |
dms ${MANAGER_PREFIX}1 docker swarm init --advertise-addr $IP &>/dev/null | |
export JOIN_TOKEN=$(dms ${MANAGER_PREFIX}1 docker swarm join-token worker -q) | |
if [[ ${MANAGER_COUNT} -gt 1 ]]; then | |
echo "[+] Adding and Configuring ${MANAGER_COUNT} Managers" | |
for MANAGER in $(seq 2 ${MANAGER_COUNT}); do | |
MANAGER_NAME="${MANAGER_PREFIX}${MANAGER}" | |
dms ${MANAGER_NAME} docker swarm join --token ${JOIN_TOKEN} $IP:2377 &>/dev/null | |
dms ${MANAGER_PREFIX}1 docker node promote ${MANAGER_NAME} &>/dev/null | |
done; | |
fi; | |
echo "[+] Adding ${NODE_COUNT} nodes to Swarm" | |
for NODE in $(seq 1 ${NODE_COUNT}); do | |
NODE_NAME="${NODE_PREFIX}${NODE}" | |
dms ${NODE_NAME} docker swarm join --token ${JOIN_TOKEN} $IP:2377 &>/dev/null | |
done; | |
echo "[+] Done" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment