installModules.sh 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #!/usr/bin/env bash
  2. ROOT=$(id -u)
  3. if [ "$ROOT" != "0" ];
  4. then
  5. echo "Este comando debe ejecutarse como root."
  6. exit 0
  7. fi
  8. ###################################################################
  9. if [ "$1" = "-h" ] || [ "$1" = "--help" ];
  10. then
  11. echo "Comando para instalar flowdat."
  12. echo "Si no se pasan parametros se ejecuta el script completo preguntando los datos necesarios"
  13. echo "Parametros:"
  14. echo "\t--ansible\tEjecuta la linea del ansible"
  15. exit 1
  16. fi
  17. ###################################################################
  18. fcGetYesNo() {
  19. while true;
  20. do
  21. read VALUEYESNO
  22. if [ "$VALUEYESNO" = "" ] || [ "$VALUEYESNO" = "y" ] || [ "$VALUEYESNO" = "Y" ] || [ "$VALUEYESNO" = "yes" ] || [ "$VALUEYESNO" = "YES" ];
  23. then
  24. VALUEYESNO=1
  25. return
  26. fi
  27. if [ "$VALUEYESNO" = "n" ] || [ "$VALUEYESNO" = "N" ] || [ "$VALUEYESNO" = "no" ] || [ "$VALUEYESNO" = "NO" ];
  28. then
  29. VALUEYESNO=0
  30. return
  31. fi
  32. done
  33. }
  34. fcCheckExecution () {
  35. if [ $? -eq 0 ];
  36. then
  37. return
  38. else
  39. echo "Algunos comandos no se ejecutaron correctamente."
  40. exit 0
  41. fi
  42. }
  43. ###################################################################
  44. DIRINSTALLDEFAULT="/opt/flowdat"
  45. GITDEFUALT="git clone git@bitbucket.org:ikflowdat/installer.git ."
  46. ###################################################################
  47. if [ "$1" != "--ansible" ];
  48. then
  49. FILEANSIBLE="#!/bin/bash\ncd ..\neval \$(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml"
  50. ###################################################################
  51. echo "Ingrese el nombre del cliente para la instalacion. Ej.: galvez"
  52. read CLIENTNAME
  53. echo "Ingrese el nombre del dominio. Ej.: flowdat.net"
  54. read DOMAINNAME
  55. echo ""
  56. echo ""
  57. echo "Las url seran base.$CLIENTNAME.$DOMAINNAME. Si esto NO es correcto aborte la ejecucion con ctrl+c"
  58. echo ""
  59. echo ""
  60. ###################################################################
  61. echo "Instalar componentes base? (Y/n)"
  62. VALUEYESNO=1
  63. fcGetYesNo
  64. if [ "$VALUEYESNO" = "1" ];
  65. then
  66. ## no se utiliza un && porque pueden existir error del apt en la consulta de los repo
  67. apt-get update && apt-get install curl git python
  68. curl https://bootstrap.pypa.io/get-pip.py | python
  69. pip install -U pip setuptools
  70. curl -fsSL get.docker.com | sh
  71. pip install docker-compose==1.22
  72. fcCheckExecution
  73. fi
  74. ###################################################################
  75. DIRINSTALL=$DIRINSTALLDEFAULT
  76. echo "Ingrese el directorio de instalacion: (default: $DIRINSTALLDEFAULT)"
  77. read DIRINSTALL
  78. if [ "$DIRINSTALL" = "" ];
  79. then
  80. DIRINSTALL=$DIRINSTALLDEFAULT
  81. fi
  82. mkdir -p $DIRINSTALL
  83. ###################################################################
  84. DOCKERMAKEINSTALL="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind make:install $DIRINSTALL --client=$CLIENTNAME --domain=$DOMAINNAME"
  85. DOCKERGETSOURCE="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind get:source $DIRINSTALL/git.ini --timeout=120"
  86. DOCKERFIXNGINX="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind fix:nginx $DIRINSTALL"
  87. ###################################################################
  88. echo "Ingresando al directorio $DIRINSTALL"
  89. cd $DIRINSTALL
  90. ###################################################################
  91. GIT=$GITDEFUALT
  92. echo "Ingrese repositorio git a instalar. Si queda en blanco no se realiza el pull.: (default: $GITDEFUALT)"
  93. read GIT
  94. if [ "$GIT" != "" ];
  95. then
  96. eval $GIT
  97. fi
  98. ###################################################################
  99. echo "Ingresando al directorio $DIRINSTALL/tools"
  100. cd tools
  101. ###################################################################
  102. echo "Construimos el dind?(Y/n)"
  103. VALUEYESNO=1
  104. fcGetYesNo
  105. if [ "$VALUEYESNO" = "1" ];
  106. then
  107. echo "Contruyendo el dind"
  108. docker build --build-arg DIR_INSTALL=$(pwd) -t dind .
  109. else
  110. echo "NO SE CONSTRUYE EL DIND"
  111. fi
  112. ###################################################################
  113. echo "Instalamos paquetes adicionales?(Y/n)"
  114. VALUEYESNO=1
  115. fcGetYesNo
  116. if [ "$VALUEYESNO" = "1" ];
  117. then
  118. echo "Instalando paquetes adicionales en dind"
  119. docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind composer install
  120. else
  121. echo "NO SE INSTALAN LOS PAQUETES ADICIONALES"
  122. fi
  123. ###################################################################
  124. echo "Creando los archivos de instalacion. Si queda en blanco se utiliza -> $DOCKERMAKEINSTALL"
  125. read COMMAND
  126. if [ "$COMMAND" = "" ];
  127. then
  128. eval $DOCKERMAKEINSTALL
  129. else
  130. eval $COMMAND
  131. fi
  132. ###################################################################
  133. echo "Ingresando al directorio $DIRINSTALL"
  134. cd $DIRINSTALL
  135. ###################################################################
  136. echo "Obteniendo codigo fuente. Si queda en blanco se utiliza -> $DOCKERGETSOURCE"
  137. read COMMAND
  138. if [ "$COMMAND" = "" ];
  139. then
  140. eval $DOCKERGETSOURCE
  141. else
  142. eval $COMMAND
  143. fi
  144. ###################################################################
  145. echo "Fix nginx. Si queda en blanco se utiliza -> $DOCKERFIXNGINX"
  146. read COMMAND
  147. if [ "$COMMAND" = "" ];
  148. then
  149. eval $DOCKERFIXNGINX
  150. else
  151. eval $COMMAND
  152. fi
  153. fi
  154. ###################################################################
  155. echo "Creando archivo de ejecucion ansible"
  156. echo "El archivo se creara con las siguientes instrucciones"
  157. echo $FILEANSIBLE
  158. echo ""
  159. echo "Desea modificar el archivo? Si se deja en blanco se toma el default. "
  160. read COMMAND
  161. if [ "$COMMAND" = "" ];
  162. then
  163. echo $FILEANSIBLE > $DIRINSTALL/ansible.run
  164. else
  165. echo $COMMAND > $DIRINSTALL/ansible.run
  166. fi
  167. docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind ansible
  168. exit 1