installerSupport.sh 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  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. bitbucketid_rsa="-----BEGIN RSA PRIVATE KEY-----
  10. MIIEpAIBAAKCAQEAsCo4Xa/fLaryiZt6igRK1IPNJsKeDLWBN6CWrv3TQ2iMcwE1
  11. zhTTX115N+KngVN8p1v5VrSMHKpvyXQDZPG/FJnWm5ry75qSYTmEtY8nfRsGAbwT
  12. i4swY+4jqrH1RRjbuVMsXPGjFX34SZTTJEl8ouVAFy/7HR+ODUe2+enWVnaouhVs
  13. Xj+bW2u7/dV1kZctFa5g5iV3hqGH32dBME5ztg4Fh7fAxkRTiJl+NBI7/LIdv9dl
  14. qmtDAdNdRqaI1dBpy8sHyZhRfjPeVbhdKsjE5IBhDLlYzyxK5FC41us08VCdq+M1
  15. 1qVzIVM61PBosW5NfwlrRgLDPEXkazUdhJO6YwIDAQABAoIBAFEf4D0klH4PTwmX
  16. k+Ki/2LGH19OGEJ6Azt+tGV5diSArMz5LbHtXTl5bi0SL1ka/TiE3lnTYwKAamI3
  17. DqkZuojeHzohLOayI96qAjcp6WFvZGDAH7APNQWP0NT2hqB/RhAeATv7+sIW9JPN
  18. +T2oqcDKGa2T5uwOb/glolmMGaxOzNfAFAgnD7p7cnR0yijW5t3bc4q0sOFu/H3N
  19. jYsAqvMu6Nkpt9hjlu42x5Muwj9YeKwpZoE1sno62JeQFZo7nO7DrOrE7DOENoWV
  20. PMDxs8Hz0SRQlZcJn2I/W9wX8A8gCAWGhbAtUGQkS8gCaMp0dOcxoV3EttriQgtU
  21. X1oUwIECgYEA2Vge4E8E53BzLGTk8sozn1qteYn3cLGgJgC78MEzZN/G57DxVbC9
  22. ntlSlYaYLlaPlSlNzZyG0s3UhpPY7YgP9srpohfPyXvb0ycfsGYMOcRNjVwdi2ap
  23. dPiG+p9vLSG3raNoeTxDEtjFZz1EM1rQECx2N40JwIuzeM2g+kE0JjMCgYEAz38r
  24. NTs1wASG7Bc7geIDxb34PWM8Nnw/DN57ceJP+Miwq/hYAJg6eK57ar9n44Y3xf7a
  25. mHkkgBU1vzuIyYfC5jVut6XkbialLsJUHfCNi3fPDBR7sEy6soiN34GoGp2vnCVD
  26. pDf2aCSMeFGfgwe4imFHbqE0R87cnet+q+CjCxECgYA8EbfO5OgFEzYxwdzpIWtt
  27. EoG5gqEpu134wuEupCcRLSvrIyNAPK3btlK10tJClFfwsM65EhbNMmgXncspsx4+
  28. Zkx2KUCbfij+TeTbOwkL+i448ImV2pThKEMeB2yRu6zpR617PGWJUvIUG4G689Fn
  29. dvJhXhCg77t1mtdv8w93swKBgQCIxor0y9LigBlwBuBy/Uj/T/oSfRdz0vK8yOsW
  30. ZtfQZnoO4eUgfzgL1PgFpaYVlKOvIA938mLdCx4isFu6fIM8vHv/EptBALhh2jcY
  31. hTjIdnFExTvDOtDWXq0mZ5En+kmH5Ahyd3E1tOHjbep3tN8wWG99vUV5ECLc9h7J
  32. rYnMAQKBgQDQ/JiBT7ygfzAblxPnq5Dnr52C3CFTE57GNA8FIEx+On6FdtVDRM0g
  33. cNjoc2e+2MfbaJXFAuMvXDvzb2qxrHgf2TosxeuPTg79iYOfWMU8G62i/v0wPr1M
  34. 0Cj2hszJg4H0dMQPS0kDmO6mZmt6FB4E2gItmeBlTGfMwdJpaQC4rw==
  35. -----END RSA PRIVATE KEY-----"
  36. ###################################################################
  37. GITLAB_HOST_SSH=$(ssh-keygen -F gitlab.com | wc -m)
  38. if [ "$GITLAB_HOST_SSH" = "0" ];
  39. then
  40. ssh-keyscan -H -p 22 gitlab.com >> ~/.ssh/known_hosts
  41. fi
  42. ###################################################################
  43. ROOT=$(id -u)
  44. if [ "$ROOT" != "0" ];
  45. then
  46. echo -e "${RED} Este comando debe ejecutarse como root.${NOCOLOR}"
  47. exit 0
  48. fi
  49. ###################################################################
  50. DEVELOP=0
  51. CLIENT=""
  52. HELP=0
  53. ANSIBLE=0
  54. for VAR in "$@"
  55. do
  56. KEY="$(cut -d'=' -f1 <<<"$VAR")"
  57. VALUE="$(cut -d'=' -f2 <<<"$VAR")"
  58. if [ "$KEY" = "--develop" ];
  59. then
  60. DEVELOP=1
  61. fi
  62. if [ "$KEY" = "--help" ] || [ "$VAR" = "-h" ];
  63. then
  64. HELP=1
  65. fi
  66. if [ "$KEY" = "--ansible" ];
  67. then
  68. ANSIBLE=1
  69. fi
  70. if [ "$KEY" = "--cliente" ];
  71. then
  72. CLIENT=${VALUE}
  73. fi
  74. done
  75. if [ "$HELP" = "1" ];
  76. then
  77. echo -e "Comando para instalar flowdat."
  78. echo -e "Si no se pasan parametros se ejecuta el script completo preguntando los datos necesarios"
  79. echo -e "Parametros:"
  80. echo -e " --develop Si es 1, instala el codigo fuente. ${RED}${BOLD}NUNCA UTILIZAR EN CLIENTES${NOCOLOR}."
  81. echo -e " --cliente Nombre del cliente que va a instalar. Se utiliza como dominio."
  82. echo -e " --ansible Ejecuta la linea del ansible. Debe pasar el directorio donde se encuentra el playbook."
  83. exit 1
  84. fi
  85. ###################################################################
  86. fcGetYesNo() {
  87. while true;
  88. do
  89. read VALUEYESNO
  90. if [ "$VALUEYESNO" = "" ] || [ "$VALUEYESNO" = "y" ] || [ "$VALUEYESNO" = "Y" ] || [ "$VALUEYESNO" = "yes" ] || [ "$VALUEYESNO" = "YES" ];
  91. then
  92. VALUEYESNO=1
  93. return
  94. fi
  95. if [ "$VALUEYESNO" = "n" ] || [ "$VALUEYESNO" = "N" ] || [ "$VALUEYESNO" = "no" ] || [ "$VALUEYESNO" = "NO" ];
  96. then
  97. VALUEYESNO=0
  98. return
  99. fi
  100. done
  101. }
  102. fcCheckExecution () {
  103. if [ $? -eq 0 ];
  104. then
  105. return
  106. else
  107. echo -e "${RED}Algunos comandos no se ejecutaron correctamente.${NOCOLOR}"
  108. exit 0
  109. fi
  110. }
  111. ###################################################################
  112. DIRINSTALLDEFAULT="/opt/flowdat"
  113. FILEANSIBLE="#!/bin/bash\neval \$(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml "
  114. ###################################################################
  115. DIRINSTALL=${DIRINSTALLDEFAULT}
  116. echo -e "Ingrese el directorio absoluto de instalacion: (default: ${BOLD}${DIRINSTALLDEFAULT}${NOCOLOR})"
  117. read DIRINSTALL
  118. if [ "${DIRINSTALL}" = "" ];
  119. then
  120. DIRINSTALL=${DIRINSTALLDEFAULT}
  121. fi
  122. mkdir -p ${DIRINSTALL}
  123. if [ "$ANSIBLE" = "0" ];
  124. then
  125. ###################################################################
  126. if [ "$CLIENT" = "" ];
  127. then
  128. echo -e "Ingrese el nombre del cliente para la instalacion. Ej.: ${BOLD}galvez${NOCOLOR}"
  129. read CLIENTNAME
  130. else
  131. CLIENTNAME=${CLIENT}
  132. fi
  133. DOMAINNAME="flowdat.net"
  134. echo -e ""
  135. echo -e ""
  136. echo -e "Las url seran ${GREEN}base.${CLIENTNAME}.${DOMAINNAME}${NOCOLOR}. Si esto NO es correcto aborte la ejecucion con ctrl+c"
  137. echo -e ""
  138. echo -e ""
  139. echo -e "${BLUE}###############################################################${NOCOLOR}"
  140. ###################################################################
  141. echo -e "Instalar paquetes linux necesarios? (${GREEN}${BOLD}Y${NOCOLOR}/n)"
  142. VALUEYESNO=1
  143. fcGetYesNo
  144. if [ "$VALUEYESNO" = "1" ];
  145. then
  146. ## no se utiliza un && porque pueden existir error del apt en la consulta de los repo
  147. apt-get update
  148. apt-get install -yq curl git python
  149. curl https://bootstrap.pypa.io/get-pip.py | python
  150. pip install -U pip setuptools
  151. curl -fsSL get.docker.com | sh
  152. pip install docker-compose==1.22
  153. fcCheckExecution
  154. fi
  155. fcCheckExecution
  156. ###################################################################
  157. echo -e ""
  158. echo -e ""
  159. echo -e ""
  160. echo -e ""
  161. echo -e "${BLUE}###############################################################${NOCOLOR}"
  162. echo -e "Ingresando al directorio ${BOLD}${DIRINSTALL}${NOCOLOR}"
  163. cd ${DIRINSTALL}
  164. BRANCH=""
  165. echo -e "Ingrese la rama a instalar. (default: ${BOLD}latest${NOCOLOR})"
  166. read BRANCH
  167. if [ "$BRANCH" = "" ];
  168. then
  169. BRANCH="latest"
  170. fi
  171. fcCheckExecution
  172. ###################################################################
  173. DOCKERIMAGEINSTALLERBASE="docker.infra.flowdat.com/fd3/installer:$BRANCH"
  174. DOCKERIMAGEINSTALLER="dind"
  175. DOCKERMAKEINSTALL="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock ${DOCKERIMAGEINSTALLER} make:installImages ${DIRINSTALL} --client=${CLIENTNAME} --domain=${DOMAINNAME} --branch=${BRANCH} --develop=${DEVELOP}"
  176. DOCKERGETSOURCE="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock dind get:source ${DIRINSTALL}/git.ini --timeout=120"
  177. DOCKERSERVICE="ln -sf ${DIRINSTALL}/docker-compose.service /etc/systemd/system/docker-compose.service"
  178. ###################################################################
  179. docker pull ${DOCKERIMAGEINSTALLERBASE}
  180. docker tag ${DOCKERIMAGEINSTALLERBASE} ${DOCKERIMAGEINSTALLER}
  181. ###################################################################
  182. if [ "$DEVELOP" = "1" ];
  183. then
  184. BRANCH=""
  185. echo -e "Ingrese la rama a instalar de los modulos. (default: ${BOLD}latest${NOCOLOR})"
  186. read BRANCH
  187. if [ "$BRANCH" = "" ];
  188. then
  189. BRANCH="latest"
  190. fi
  191. ###################################################################
  192. # Solo para desarrollo
  193. DOCKERMAKEINSTALL="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock ${DOCKERIMAGEINSTALLER} make:installImages ${DIRINSTALL} --client=${CLIENTNAME} --domain=${DOMAINNAME} --branch=${BRANCH} --develop=${DEVELOP}"
  194. DOCKERGETSOURCE="docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock dind get:source ${DIRINSTALL}/git.ini --timeout=120"
  195. DOCKERSERVICE="ln -sf ${DIRINSTALL}/docker-compose.service /etc/systemd/system/docker-compose.service"
  196. ###################################################################
  197. echo -e ""
  198. echo -e ""
  199. echo -e ""
  200. echo -e ""
  201. echo -e "${BLUE}###############################################################${NOCOLOR}"
  202. echo -e "Desea crear los archivos de instalacion."
  203. echo -e "Opciones:"
  204. echo -e " Ingrese '${RED}n${NOCOLOR}' para omitir este paso."
  205. echo -e " Presionar entrer para ejecutar el comando por default: ${GREEN}${DOCKERMAKEINSTALL}${NOCOLOR}"
  206. echo -e " Puede ingresar el comando que desee ejecutar."
  207. read COMMAND
  208. else
  209. echo -e "${BLUE}###############################################################${NOCOLOR}"
  210. echo -e "Creando los archivos de instalacion."
  211. COMMAND=""
  212. fi
  213. if [ "${COMMAND}" = "" ];
  214. then
  215. eval ${DOCKERMAKEINSTALL}
  216. else
  217. if [ "${COMMAND}" != "n" ] && [ "${COMMAND}" != "N" ];
  218. then
  219. eval ${COMMAND}
  220. fi
  221. fi
  222. fcCheckExecution
  223. ###################################################################
  224. if [ "$DEVELOP" = "1" ];
  225. then
  226. eval `ssh-agent`
  227. ssh-add - <<< "$bitbucketid_rsa"
  228. echo -e ""
  229. echo -e ""
  230. echo -e ""
  231. echo -e ""
  232. echo -e "${BLUE}###############################################################${NOCOLOR}"
  233. echo -e "Ingresando al directorio ${DIRINSTALL}"
  234. cd ${DIRINSTALL}
  235. ###################################################################
  236. echo -e "Desea obtener el codigo fuente."
  237. echo -e "Opciones:"
  238. echo -e " Ingrese '${RED}n${NOCOLOR}' para omitir este paso."
  239. echo -e " Presionar entrer para ejecutar el comando por default: ${GREEN}${DOCKERGETSOURCE}${NOCOLOR}"
  240. echo -e " Puede ingresar el comando que desee ejecutar."
  241. read COMMAND
  242. if [ "${COMMAND}" = "" ];
  243. then
  244. eval $DOCKERGETSOURCE
  245. else
  246. if [ "${COMMAND}" != "n" ] && [ "${COMMAND}" != "N" ];
  247. then
  248. eval ${COMMAND}
  249. fi
  250. fi
  251. fcCheckExecution
  252. git config --global core.filemode false
  253. fcCheckExecution
  254. ###################################################################
  255. echo -e ""
  256. echo -e ""
  257. echo -e ""
  258. echo -e ""
  259. echo -e "${BLUE}###############################################################${NOCOLOR}"
  260. echo -e "Desea registrar el servicio de docker?"
  261. echo -e "Opciones:"
  262. echo -e " Ingrese '${RED}n${NOCOLOR}' para omitir este paso."
  263. echo -e " Presionar entrer para ejecutar el comando por default: ${GREEN}${DOCKERSERVICE}${NOCOLOR}"
  264. echo -e " Puede ingresar el comando que desee ejecutar."
  265. read COMMAND
  266. if [ "${COMMAND}" = "" ];
  267. then
  268. eval ${DOCKERSERVICE}
  269. else
  270. if [ "${COMMAND}" != "n" ] && [ "${COMMAND}" != "N" ];
  271. then
  272. eval ${COMMAND}
  273. fi
  274. fi
  275. fcCheckExecution
  276. else
  277. ###################################################################
  278. echo -e "${BLUE}###############################################################${NOCOLOR}"
  279. echo -e "Registrando el servicio de docker"
  280. eval ${DOCKERSERVICE}
  281. fcCheckExecution
  282. fi
  283. ###################################################################
  284. echo -e ""
  285. echo -e ""
  286. echo -e ""
  287. echo -e ""
  288. echo -e "${BLUE}###############################################################${NOCOLOR}"
  289. echo -e "Creando el directorio letsencrypt"
  290. mkdir -p ${DIRINSTALL}/letsencrypt
  291. mkdir -p /tmp/letsencrypt
  292. echo -e "Copiando archivos necesarios al directorio temporal"
  293. docker run --name dind_tmp dind bash /bin/true
  294. docker cp dind_tmp:/opt/installer/tools/letsencrypt/flowdat_deploy.sh /tmp/letsencrypt/flowdat_deploy.sh
  295. docker cp dind_tmp:/opt/installer/tools/letsencrypt/googledns.py /tmp/letsencrypt/googledns.py
  296. docker cp dind_tmp:/opt/installer/tools/letsencrypt/key.json /tmp/letsencrypt/key.json
  297. docker rm dind_tmp
  298. echo -e "Copiando archivos necesarios al directorio letsencrypt"
  299. cp -n /tmp/letsencrypt/* ${DIRINSTALL}/letsencrypt/
  300. rm -rf /tmp/letsencrypt
  301. echo -e "Ingresando al directorio letsencrypt"
  302. cd ${DIRINSTALL}/letsencrypt
  303. echo -e "Instalando paquetes requeridos"
  304. pip install google google-cloud-dns certbot-dns-google
  305. mkdir -p ${DIRINSTALL}/nginx/certs
  306. ###################################################################
  307. echo -e ""
  308. echo -e ""
  309. echo -e ""
  310. echo -e ""
  311. echo -e "${BLUE}###############################################################${NOCOLOR}"
  312. echo -e "Desea dar de alta los dominios?(${GREEN}${BOLD}Y${NOCOLOR}/n)"
  313. VALUEYESNO=1
  314. fcGetYesNo
  315. if [ "$VALUEYESNO" = "1" ];
  316. then
  317. echo -e "Ingrese la ip publica del cliente para acceder al flowdat:"
  318. read IPPUBLIC
  319. echo -e "Registrando los dominios"
  320. python googledns.py --key=key.json --action=create --client=${CLIENTNAME} --ip_address=${IPPUBLIC} --domain=${DOMAINNAME}
  321. else
  322. echo -e "${RED}SE ASUME QUE LOS DOMINIOS YA ESTAN DADOS DE ALTA${NOCOLOR}"
  323. fi
  324. fcCheckExecution
  325. ###################################################################
  326. echo -e ""
  327. echo -e ""
  328. echo -e ""
  329. echo -e ""
  330. echo -e "${BLUE}###############################################################${NOCOLOR}"
  331. echo -e "Desea crear los certificados ssl?(${GREEN}${BOLD}Y${NOCOLOR}/n)"
  332. VALUEYESNO=1
  333. fcGetYesNo
  334. if [ "$VALUEYESNO" = "1" ];
  335. then
  336. echo -e "Agregando el repositorio deb http://ftp.debian.org/debian stretch-backports main"
  337. echo -e "deb http://ftp.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/certbot.debian.list
  338. echo -e "Actualizando paquetes"
  339. apt-get update && apt-get install -yq certbot -t stretch-backports
  340. fcCheckExecution
  341. echo -e "${BLUE}###############################################################${NOCOLOR}"
  342. echo -e "En caso de error con certbot y python puede correr esta linea: python -m easy_install --upgrade pyOpenSSL"
  343. echo -e "${BLUE}###############################################################${NOCOLOR}"
  344. fcCheckExecution
  345. echo -e "Ingresando al directorio letsencrypt"
  346. cd ${DIRINSTALL}/letsencrypt
  347. sed -i "s/DOMAIN_NAME_REPLACE/${CLIENTNAME}.${DOMAINNAME}/g" flowdat_deploy.sh
  348. echo -e "Generando certificados"
  349. certbot certonly --cert-name ${CLIENTNAME}.${DOMAINNAME} --dns-google --dns-google-credentials ${DIRINSTALL}/letsencrypt/key.json --server https://acme-v02.api.letsencrypt.org/directory -d "*.${CLIENTNAME}.${DOMAINNAME}" -d "${CLIENTNAME}.${DOMAINNAME}" --deploy-hook=${DIRINSTALL}/letsencrypt/flowdat_deploy.sh
  350. fcCheckExecution
  351. echo -e ""
  352. echo -e "Verificar que la siguiente línea aparezca entre las últimas a la salida del comando:"
  353. echo -e " EJECUCION MANUAL: Running deploy-hook command: /opt/flowdat/letsencrypt/flowdat_deploy.sh"
  354. echo -e "la cual indica que el hook se ejecutó. Eso significa que los certificados deberían haberse copiado a la carpeta de Nginx. Verificar con el navegador que el sitio web sea seguro."
  355. echo -e "Probar autorenovación:"
  356. echo -e " EJECUCION MANUAL: certbot renew --dry-run"
  357. else
  358. echo -e "${RED}SE ASUME QUE LOS DOMINIOS YA ESTAN DADOS DE ALTA${NOCOLOR}"
  359. echo -e ""
  360. echo -e ""
  361. echo -e ""
  362. echo -e ""
  363. echo -e "${BLUE}###############################################################${NOCOLOR}"
  364. echo -e "Desea obtener los certificados actuales?(${GREEN}${BOLD}Y${NOCOLOR}/n)"
  365. VALUEYESNO=1
  366. fcGetYesNo
  367. if [ "$VALUEYESNO" = "1" ];
  368. then
  369. LSCERT=`ls -td /etc/letsencrypt/archive/${CLIENTNAME}.${DOMAINNAME}/cert*.pem`
  370. LSCHAIN=`ls -td /etc/letsencrypt/archive/${CLIENTNAME}.${DOMAINNAME}/chain*.pem`
  371. LSFULLCHAIN=`ls -td /etc/letsencrypt/archive/${CLIENTNAME}.${DOMAINNAME}/fullchain*.pem`
  372. LSPRIVKEY=`ls -td /etc/letsencrypt/archive/${CLIENTNAME}.${DOMAINNAME}/privkey*.pem`
  373. for var in ${LSCERT}
  374. do
  375. LSCERT=${var}
  376. break
  377. done
  378. for var in ${LSCHAIN}
  379. do
  380. LSCHAIN=${var}
  381. break
  382. done
  383. for var in ${LSFULLCHAIN}
  384. do
  385. LSFULLCHAIN=${var}
  386. break
  387. done
  388. for var in ${LSPRIVKEY}
  389. do
  390. LSPRIVKEY=${var}
  391. break
  392. done
  393. cp -f ${LSCERT} ${DIRINSTALL}/nginx/certs/cert.pem
  394. cp -f ${LSCHAIN} ${DIRINSTALL}/nginx/certs/chain.pem
  395. cp -f ${LSFULLCHAIN} ${DIRINSTALL}/nginx/certs/fullchain.pem
  396. cp -f ${LSPRIVKEY} ${DIRINSTALL}/nginx/certs/privkey.pem
  397. else
  398. echo -e "${RED}NO SE POSEEN CERTIFICADOS PARA EL NGINX${NOCOLOR}"
  399. fi
  400. fi
  401. fi
  402. ###################################################################
  403. if [ "$DEVELOP" = "1" ];
  404. then
  405. echo -e "${BLUE}###############################################################${NOCOLOR}"
  406. echo -e ""
  407. echo -e ""
  408. echo -e ""
  409. echo -e ""
  410. echo -e "Creando archivo de ejecucion ansible"
  411. echo -e "El archivo se creara con las siguientes instrucciones"
  412. echo -e "${GREEN}${FILEANSIBLE}${NOCOLOR}"
  413. echo -e ""
  414. echo -e "Desea modificar el archivo? Default ${GREEN}${BOLD}NO${NOCOLOR} presione ${BOLD}enter${NOCOLOR}. En caso contrario ingrese las lineas del archivo a utilizar. "
  415. read COMMAND
  416. else
  417. echo -e "${BLUE}###############################################################${NOCOLOR}"
  418. echo -e "Ejecutando el ansible"
  419. COMANDO=""
  420. fi
  421. if [ "${COMMAND}" = "" ];
  422. then
  423. echo -e "${FILEANSIBLE}" > ${DIRINSTALL}/ansible.run
  424. else
  425. echo -e "${COMMAND}" > ${DIRINSTALL}/ansible.run
  426. fi
  427. docker run -it -v ${DIRINSTALL}:${DIRINSTALL} -v /var/run/docker.sock:/tmp/docker.sock dind ansible ${DIRINSTALL}
  428. fcCheckExecution
  429. exit 1