updateSupport.sh 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #!/usr/bin/env bash
  2. #################################################################
  3. # COLORS
  4. BOLD="\e[1m"
  5. RED="\033[0;31m"
  6. GREEN="\033[0;32m"
  7. BLUE="\033[0;34m"
  8. NOCOLOR="\033[0m"
  9. ###################################################################
  10. ROOT=$(id -u)
  11. if [ "$ROOT" != "0" ];
  12. then
  13. echo -e "${RED} Este comando debe ejecutarse como root.${NOCOLOR}"
  14. exit 0
  15. fi
  16. ###################################################################
  17. DEVELOP=0
  18. CLIENT=""
  19. HELP=0
  20. ANSIBLE=0
  21. for VAR in "$@"
  22. do
  23. KEY="$(cut -d'=' -f1 <<<"$VAR")"
  24. VALUE="$(cut -d'=' -f2 <<<"$VAR")"
  25. if [ "$KEY" = "--help" ] || [ "$VAR" = "-h" ];
  26. then
  27. HELP=1
  28. fi
  29. if [ "$KEY" = "--ansible" ];
  30. then
  31. ANSIBLE=1
  32. fi
  33. if [ "$KEY" = "--cliente" ];
  34. then
  35. CLIENT=${VALUE}
  36. fi
  37. done
  38. if [ "$HELP" = "1" ];
  39. then
  40. echo -e "Comando para instalar flowdat."
  41. echo -e "Si no se pasan parametros se ejecuta el script completo preguntando los datos necesarios"
  42. echo -e "Parametros:"
  43. echo -e " --cliente Nombre del cliente que va a instalar. Se utiliza como dominio. NUNCA UTILIZAR EN CLIENTES."
  44. echo -e " --ansible Ejecuta la linea del ansible. Debe pasar el directorio donde se encuentra el playbook."
  45. exit 1
  46. fi
  47. ###################################################################
  48. fcGetYesNo() {
  49. while true;
  50. do
  51. read VALUEYESNO
  52. if [ "$VALUEYESNO" = "" ] || [ "$VALUEYESNO" = "y" ] || [ "$VALUEYESNO" = "Y" ] || [ "$VALUEYESNO" = "yes" ] || [ "$VALUEYESNO" = "YES" ];
  53. then
  54. VALUEYESNO=1
  55. return
  56. fi
  57. if [ "$VALUEYESNO" = "n" ] || [ "$VALUEYESNO" = "N" ] || [ "$VALUEYESNO" = "no" ] || [ "$VALUEYESNO" = "NO" ];
  58. then
  59. VALUEYESNO=0
  60. return
  61. fi
  62. done
  63. }
  64. fcCheckExecution () {
  65. if [ $? -eq 0 ];
  66. then
  67. return
  68. else
  69. echo -e "${RED}Algunos comandos no se ejecutaron correctamente.${NOCOLOR}"
  70. exit 0
  71. fi
  72. }
  73. ###################################################################
  74. DIRINSTALLDEFAULT="/opt/flowdat"
  75. FILEANSIBLE="#!/bin/bash\neval \$(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml "
  76. ###################################################################
  77. DIRINSTALL=${DIRINSTALLDEFAULT}
  78. echo -e "Ingrese el directorio absoluto de instalacion: (default: ${BOLD}${DIRINSTALLDEFAULT}${NOCOLOR})"
  79. read DIRINSTALL
  80. if [ "${DIRINSTALL}" = "" ];
  81. then
  82. DIRINSTALL=${DIRINSTALLDEFAULT}
  83. fi
  84. cd ${DIRINSTALL}
  85. if [ "$ANSIBLE" = "0" ];
  86. then
  87. echo -e ""
  88. echo -e ""
  89. echo -e ""
  90. echo -e ""
  91. echo -e "${BLUE}###############################################################${NOCOLOR}"
  92. echo -e "Parando las imagenes actuales"
  93. docker stop $(docker ps -q)
  94. ###################################################################
  95. if [ "$CLIENT" = "" ];
  96. then
  97. echo -e "Ingrese el nombre del cliente para la instalacion. Ej.: ${BOLD}galvez${NOCOLOR}"
  98. read CLIENTNAME
  99. else
  100. CLIENTNAME=${CLIENT}
  101. fi
  102. DOMAINNAME="flowdat.net"
  103. echo -e ""
  104. echo -e ""
  105. echo -e "Las url seran ${GREEN}base.${CLIENTNAME}.${DOMAINNAME}${NOCOLOR}. Si esto NO es correcto aborte la ejecucion con ctrl+c"
  106. echo -e ""
  107. echo -e ""
  108. echo -e "${BLUE}###############################################################${NOCOLOR}"
  109. echo -e "Ingresando al directorio ${BOLD}${DIRINSTALL}${NOCOLOR}"
  110. cd ${DIRINSTALL}
  111. fcCheckExecution
  112. ###################################################################
  113. BRANCH=""
  114. echo -e "Ingrese la rama a instalar. (default: ${BOLD}latest${NOCOLOR})"
  115. read BRANCH
  116. if [ "$BRANCH" = "" ];
  117. then
  118. BRANCH="latest"
  119. fi
  120. fcCheckExecution
  121. ###################################################################
  122. DOCKERIMAGEINSTALLERBASE="docker.infra.flowdat.com/fd3/installer:$BRANCH"
  123. DOCKERIMAGEINSTALLER="dind"
  124. DOCKERMAKEINSTALL="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock ${DOCKERIMAGEINSTALLER} make:updateImages ${DIRINSTALL} --client=${CLIENTNAME} --domain=${DOMAINNAME} --branch=${BRANCH} --develop=${DEVELOP}"
  125. DOCKERFIXNGINX="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock ${DOCKERIMAGEINSTALLER} fix:nginx ${DIRINSTALL}"
  126. ###################################################################
  127. docker pull ${DOCKERIMAGEINSTALLERBASE}
  128. docker tag ${DOCKERIMAGEINSTALLERBASE} ${DOCKERIMAGEINSTALLER}
  129. ###################################################################
  130. echo -e "${BLUE}###############################################################${NOCOLOR}"
  131. echo -e "Creando los archivos de instalacion."
  132. COMMAND=""
  133. eval ${DOCKERMAKEINSTALL}
  134. fcCheckExecution
  135. fi
  136. ###################################################################
  137. echo -e ""
  138. echo -e ""
  139. echo -e ""
  140. echo -e ""
  141. echo -e "${BLUE}###############################################################${NOCOLOR}"
  142. echo -e "Ejecutando el ansible"
  143. echo -e "${FILEANSIBLE}" > ${DIRINSTALL}/ansible.run
  144. docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock dind ansible ${DIRINSTALL}
  145. echo -e "Borrando las imagenes que no se necesitandb."
  146. docker system prune -f
  147. fcCheckExecution
  148. exit 1