cluster.sh 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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.*=' ./cloud.rb)
  14. EOT
  15. }
  16. # @formatter:on
  17. function create_cluser {
  18. for (( i = 0; i < $MASTERS; i ++ )); do
  19. ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=$MASTER_PLAYBOOK
  20. done
  21. for (( i = 0; i < $MINIONS; i ++ )); do
  22. ./cloud.rb "${PROVIDER}" launch -e "${ENV}" --type=$MINION_PLAYBOOK
  23. done
  24. update_cluster
  25. echo -e "\nCreated ${MASTERS}/${MASTER_PLAYBOOK} masters and ${MINIONS}/${MINION_PLAYBOOK} minions using ${PROVIDER} provider\n"
  26. }
  27. function update_cluster {
  28. for (( i = 0; i < $MASTERS; i ++ )); do
  29. ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=$MASTER_PLAYBOOK
  30. done
  31. for (( i = 0; i < $MINIONS; i ++ )); do
  32. ./cloud.rb "${PROVIDER}" config -e "${ENV}" --type=$MINION_PLAYBOOK
  33. done
  34. }
  35. function terminate_cluster {
  36. ./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=$MASTER_PLAYBOOK
  37. ./cloud.rb "${PROVIDER}" terminate -e "${ENV}" --type=$MINION_PLAYBOOK
  38. }
  39. [ -f ./cloud.rb ] || (echo 1>&2 'Cannot find ./cloud.rb' && exit 1)
  40. while getopts ':p:m:n:' flag; do
  41. case "${flag}" in
  42. p) PROVIDER="${OPTARG}" ;;
  43. m) MASTERS="${OPTARG}" ;;
  44. n) MINIONS="${OPTARG}" ;;
  45. *) echo -e 2>&1 "unsupported option $OPTARG\n"
  46. usage
  47. exit 1 ;;
  48. esac
  49. done
  50. shift $((OPTIND-1))
  51. [ -z "${1:-}" ] && (usage; exit 1)
  52. case "${1}" in
  53. 'create')
  54. [ -z "${2:-}" ] && (usage; exit 1)
  55. ENV="${2}"
  56. create_cluser ;;
  57. 'update')
  58. [ -z "${2:-}" ] && (usage; exit 1)
  59. ENV="${2}"
  60. update_cluster ;;
  61. 'terminate')
  62. [ -z "${2:-}" ] && (usage; exit 1)
  63. ENV="${2}"
  64. terminate_cluster ;;
  65. 'list') ./cloud.rb "${PROVIDER}" list ;;
  66. 'help') usage; exit 0 ;;
  67. *)
  68. echo -n 1>&2 "${1} is not a supported operation";
  69. usage;
  70. exit 1 ;;
  71. esac
  72. exit 0