#/bin/sh set -e usage() { cat << EOF NAME: machines - Create Test Environments for Docker Networking VERSION: 0.1 USAGE: $0 [command_options] [arguments...] COMMANDS: help Help and usage up Create environment with given KV store zookeeper | etcd | consul (default) Create N nodes, default = 2 destroy Destroy Environment EOF } step() { printf "\033[0;36m-----> $@\033[0m\n" } up() { step "Creating KV Store Machine" docker-machine create \ -d virtualbox \ mh-kv step "KV Store is $1" step "Starting KV Container" case "$1" in etcd) cluster_store="cluster-store=etcd://$(docker-machine ip mh-kv):2379" docker $(docker-machine config mh-kv) run -d \ -p "2379:2379" \ -h "etcd" \ --name "etcd" \ quay.io/coreos/etcd:v2.2.1 \ --listen-client-urls="http://0.0.0.0:2379" \ --advertise-client-urls="http://$(docker-machine ip mh-kv):2379" ;; zookeeper) cluster_store="cluster-store=zk://$(docker-machine ip mh-kv):2181" docker $(docker-machine config mh-kv) run -d \ -p "2181:2181" \ -h "zookeeper" \ --name "zookeeper" \ tianon/zookeeper ;; *) cluster_store="cluster-store=consul://$(docker-machine ip mh-kv):8500" docker $(docker-machine config mh-kv) run -d \ -p "8500:8500" \ -h "consul" \ --name "consul" \ progrium/consul -server -bootstrap-expect 1 ;; esac machines=$2 if [ -z machines ]; then machines=2 fi step "Creating $machines Machines" for i in $(seq $machines); do step "Creating machine $i" docker-machine create \ -d virtualbox \ --engine-opt="cluster-advertise=eth1:2376" \ --engine-opt="$cluster_store" \ mh-$i done } destroy() { for x in $(docker-machine ls | grep mh- | awk '{ print $1 }'); do docker-machine rm $x done } case "$1" in up) shift up $@ ;; destroy) destroy $@ ;; help) usage ;; *) usage ;; esac