#!/usr/bin/env bash ROOT=$(id -u) if [ "$ROOT" != "0" ]; then echo "Este comando debe ejecutarse como root." exit 0 fi ################################################################### if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then echo "Comando para instalar flowdat." echo "Si no se pasan parametros se ejecuta el script completo preguntando los datos necesarios" echo "Parametros:" echo "\t--ansible\tEjecuta la linea del ansible" exit 1 fi ################################################################### fcGetYesNo() { while true; do read VALUEYESNO if [ "$VALUEYESNO" = "" ] || [ "$VALUEYESNO" = "y" ] || [ "$VALUEYESNO" = "Y" ] || [ "$VALUEYESNO" = "yes" ] || [ "$VALUEYESNO" = "YES" ]; then VALUEYESNO=1 return fi if [ "$VALUEYESNO" = "n" ] || [ "$VALUEYESNO" = "N" ] || [ "$VALUEYESNO" = "no" ] || [ "$VALUEYESNO" = "NO" ]; then VALUEYESNO=0 return fi done } fcCheckExecution () { if [ $? -eq 0 ]; then return else echo "Algunos comandos no se ejecutaron correctamente." exit 0 fi } ################################################################### DIRINSTALLDEFAULT="/opt/flowdat" GITDEFUALT="git clone git@bitbucket.org:ikflowdat/installer.git ." ################################################################### if [ "$1" != "--ansible" ]; then FILEANSIBLE="#!/bin/bash\ncd ..\neval \$(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml" ################################################################### echo "Ingrese el nombre del cliente para la instalacion. Ej.: galvez" read CLIENTNAME echo "Ingrese el nombre del dominio. Ej.: flowdat.net" read DOMAINNAME echo "" echo "" echo "Las url seran base.$CLIENTNAME.$DOMAINNAME. Si esto NO es correcto aborte la ejecucion con ctrl+c" echo "" echo "" ################################################################### echo "Instalar componentes base? (Y/n)" VALUEYESNO=1 fcGetYesNo if [ "$VALUEYESNO" = "1" ]; then ## no se utiliza un && porque pueden existir error del apt en la consulta de los repo apt-get update && apt-get install curl git python curl https://bootstrap.pypa.io/get-pip.py | python pip install -U pip setuptools curl -fsSL get.docker.com | sh pip install docker-compose==1.22 fcCheckExecution fi ################################################################### DIRINSTALL=$DIRINSTALLDEFAULT echo "Ingrese el directorio de instalacion: (default: $DIRINSTALLDEFAULT)" read DIRINSTALL if [ "$DIRINSTALL" = "" ]; then DIRINSTALL=$DIRINSTALLDEFAULT fi mkdir -p $DIRINSTALL ################################################################### DOCKERMAKEINSTALL="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind make:install $DIRINSTALL --client=$CLIENTNAME --domain=$DOMAINNAME" DOCKERGETSOURCE="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind get:source $DIRINSTALL/git.ini --timeout=120" DOCKERFIXNGINX="docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind fix:nginx $DIRINSTALL" ################################################################### echo "Ingresando al directorio $DIRINSTALL" cd $DIRINSTALL ################################################################### GIT=$GITDEFUALT echo "Ingrese repositorio git a instalar. Si queda en blanco no se realiza el pull.: (default: $GITDEFUALT)" read GIT if [ "$GIT" != "" ]; then eval $GIT fi ################################################################### echo "Ingresando al directorio $DIRINSTALL/tools" cd tools ################################################################### echo "Construimos el dind?(Y/n)" VALUEYESNO=1 fcGetYesNo if [ "$VALUEYESNO" = "1" ]; then echo "Contruyendo el dind" docker build --build-arg DIR_INSTALL=$(pwd) -t dind . else echo "NO SE CONSTRUYE EL DIND" fi ################################################################### echo "Instalamos paquetes adicionales?(Y/n)" VALUEYESNO=1 fcGetYesNo if [ "$VALUEYESNO" = "1" ]; then echo "Instalando paquetes adicionales en dind" docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind composer install else echo "NO SE INSTALAN LOS PAQUETES ADICIONALES" fi ################################################################### echo "Creando los archivos de instalacion. Si queda en blanco se utiliza -> $DOCKERMAKEINSTALL" read COMMAND if [ "$COMMAND" = "" ]; then eval $DOCKERMAKEINSTALL else eval $COMMAND fi ################################################################### echo "Ingresando al directorio $DIRINSTALL" cd $DIRINSTALL ################################################################### echo "Obteniendo codigo fuente. Si queda en blanco se utiliza -> $DOCKERGETSOURCE" read COMMAND if [ "$COMMAND" = "" ]; then eval $DOCKERGETSOURCE else eval $COMMAND fi ################################################################### echo "Fix nginx. Si queda en blanco se utiliza -> $DOCKERFIXNGINX" read COMMAND if [ "$COMMAND" = "" ]; then eval $DOCKERFIXNGINX else eval $COMMAND fi fi ################################################################### echo "Creando archivo de ejecucion ansible" echo "El archivo se creara con las siguientes instrucciones" echo $FILEANSIBLE echo "" echo "Desea modificar el archivo? Si se deja en blanco se toma el default. " read COMMAND if [ "$COMMAND" = "" ]; then echo $FILEANSIBLE > $DIRINSTALL/ansible.run else echo $COMMAND > $DIRINSTALL/ansible.run fi docker run -it -v $DIRINSTALL:$DIRINSTALL -v /var/run/docker.sock:/tmp/docker.sock dind ansible exit 1