cluster.sh 2.2 KB

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