cluster.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/bin/bash -eu
  2. MINIONS=3
  3. MASTERS=1
  4. PROVIDER=gce
  5. # FIXME: Add options
  6. MASTER_PLAYBOOK=openshift-master
  7. MINION_PLAYBOOK=openshift-minion
  8. # @formatter:off
  9. function usage {
  10. cat 1>&2 <<-EOT
  11. ${0} : [create|terminate|update|list] {GCE environment tag}
  12. Supported environment tags:
  13. $(grep 'SUPPORTED_ENVS.*=' ./lib/gce_command.rb)
  14. EOT
  15. }
  16. # @formatter:on
  17. function create_cluster {
  18. ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=$MASTER_PLAYBOOK -c $MASTERS
  19. ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=$MINION_PLAYBOOK -c $MINIONS
  20. update_cluster
  21. echo -e "\nCreated ${MASTERS}/${MASTER_PLAYBOOK} masters and ${MINIONS}/${MINION_PLAYBOOK} minions using ${PROVIDER} provider\n"
  22. }
  23. function update_cluster {
  24. ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=$MASTER_PLAYBOOK
  25. ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=$MINION_PLAYBOOK
  26. }
  27. function terminate_cluster {
  28. ./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=$MASTER_PLAYBOOK
  29. ./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=$MINION_PLAYBOOK
  30. }
  31. [ -f ./cloud.rb ] || (echo 1>&2 'Cannot find ./cloud.rb' && exit 1)
  32. while getopts ':p:m:n:' flag; do
  33. case "${flag}" in
  34. p) PROVIDER="${OPTARG}" ;;
  35. m) MASTERS="${OPTARG}" ;;
  36. n) MINIONS="${OPTARG}" ;;
  37. *) echo -e 2>&1 "unsupported option $OPTARG\n"
  38. usage
  39. exit 1 ;;
  40. esac
  41. done
  42. shift $((OPTIND-1))
  43. [ -z "${1:-}" ] && (usage; exit 1)
  44. case "${1}" in
  45. 'create')
  46. [ -z "${2:-}" ] && (usage; exit 1)
  47. ENV="${2}"
  48. create_cluster ;;
  49. 'update')
  50. [ -z "${2:-}" ] && (usage; exit 1)
  51. ENV="${2}"
  52. update_cluster ;;
  53. 'terminate')
  54. [ -z "${2:-}" ] && (usage; exit 1)
  55. ENV="${2}"
  56. terminate_cluster ;;
  57. 'list') ./cloud.rb "${PROVIDER}" list ;;
  58. 'help') usage; exit 0 ;;
  59. *)
  60. echo -n 1>&2 "${1} is not a supported operation";
  61. usage;
  62. exit 1 ;;
  63. esac
  64. exit 0