| #/bin/sh |
| |
| set -e |
| |
| usage() |
| { |
| cat << EOF |
| NAME: |
| machines - Create Test Environments for Docker Networking |
| |
| VERSION: |
| 0.1 |
| |
| USAGE: |
| $0 <command> [command_options] [arguments...] |
| |
| COMMANDS: |
| help |
| Help and usage |
| |
| up <kv-store> <scale> |
| 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 |