diff options
Diffstat (limited to 'cluster.sh')
-rwxr-xr-x | cluster.sh | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/cluster.sh b/cluster.sh new file mode 100755 index 000000000..50fbe66eb --- /dev/null +++ b/cluster.sh @@ -0,0 +1,82 @@ +#!/bin/bash -eu + +MINIONS=3 +MASTERS=1 +PROVIDER=gce + +# @formatter:off +function usage { + cat 1>&2 <<-EOT + ${0} : [create|destroy|update|list] {GCE environment tag} + + Supported environment tags: + $(grep 'SUPPORTED_ENVS.*=' ./cloud.rb) +EOT +} +# @formatter:on + +function create_cluser { + for (( i = 0; i < $MINIONS; i ++ )); do + ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=os3-minion + done + + for (( i = 0; i < $MASTERS; i ++ )); do + ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=os3-master + done + update_cluster + echo -e "\nCreated ${MASTERS} masters and ${MINIONS} minions using ${PROVIDER} provider\n" +} + +function update_cluster { + for (( i = 0; i < $MINIONS; i ++ )); do + ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=os3-minion + done + + for (( i = 0; i < $MASTERS; i ++ )); do + ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=os3-master + done +} + +function terminate_cluster { + #./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=os3-master + ./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=os3-minion +} + +[ -f ./cloud.rb ] || (echo 1>&2 'Cannot find ./cloud.rb' && exit 1) + +while getopts ':p:m:n:' flag; do + case "${flag}" in + p) PROVIDER="${OPTARG}" ;; + m) MASTERS="${OPTARG}" ;; + n) MINIONS="${OPTARG}" ;; + *) echo -e 2>&1 "unsupported option $OPTARG\n" + usage + exit 1 ;; + esac +done +shift $((OPTIND-1)) + +[ -z "${1:-}" ] && (usage; exit 1) + +case "${1}" in + 'create') + [ -z "${2:-}" ] && (usage; exit 1) + ENV="${2}" + create_cluser ;; + 'update') + [ -z "${2:-}" ] && (usage; exit 1) + ENV="${2}" + update_cluster ;; + 'terminate') + [ -z "${2:-}" ] && (usage; exit 1) + ENV="${2}" + terminate_cluster ;; + 'list') ./cloud.rb "${PROVIDER}" list ;; + 'help') usage; exit 0 ;; + *) + echo -n 1>&2 "${1} is not a supported operation"; + usage; + exit 1 ;; +esac + +exit 0 |