gabriel fce1e97d07 Agregado para versionar los modulos vor 7 Jahren
..
keys b990f73ad9 agregue keys vor 7 Jahren
mysql 80cfe81ed3 correcciones vor 7 Jahren
src fce1e97d07 Agregado para versionar los modulos vor 7 Jahren
Dockerfile f093f661c4 docker image vor 7 Jahren
ONU.json 4a26a8be41 Avances importador vor 7 Jahren
cmd.php e7f1f795ef Se agregaron las keys de bitbucket y gogs vor 7 Jahren
composer.json ea5574beb2 Merge master vor 7 Jahren
composer.lock 9b0f2d2022 Merge master vor 7 Jahren
composer.phar bb32b58a95 Reformateo de tools/src/DockerInventory-GetSource-MergeHostFile-Release vor 7 Jahren
docker-compose.service 06957de177 instalación debe ir en /opt/flowdat vor 7 Jahren
execute.sh dfef93c4b2 Correciones varias de la instalacion vor 7 Jahren
grafana.env 26b9e06218 agregue running env para grafana, junto con su grafana.env vor 7 Jahren
modules.ini fce1e97d07 Agregado para versionar los modulos vor 7 Jahren
mysql_scripts.sql 1d9bba3e5d Arreglos FD3-463 vor 7 Jahren
playbook.yml 1d9bba3e5d Arreglos FD3-463 vor 7 Jahren
readme.md fce1e97d07 Agregado para versionar los modulos vor 7 Jahren
repositories.ini ea11188ff8 Agregado de un comentario al README.md vor 7 Jahren
user_system.json 1d9bba3e5d Arreglos FD3-463 vor 7 Jahren

readme.md

#Requerimientos

  • curl
  • git
  • python
  • pip
  • docker
  • docker-compose
  • php/composer

#Instalación de requerimientos:

curl

apt-get update && apt-get install curl git python

pip

# descargo el  archivo get-pip.py desde una url
curl https://bootstrap.pypa.io/get-pip.py | python

# actualizo pip
pip install -U pip

docker (Versión funcional: apt-get install docker-ce=17.10.0~ce-0~debian - Versión con errores: 17.11 )

# con sudo
curl -fsSL get.docker.com | sudo sh
sudo usermod -aG docker iksop

# con root
curl -fsSL get.docker.com | sh
usermod -aG docker iksop

docker-compose

sudo pip install docker-compose

Pasos:

####. Crear un directorio para la instalación, puede ser en cualquier lugar del sistema. Tener en cuenta que en este directorio se descargará código fuente.

mkdir /opt/flowdat  

####. Entrar la directorio.

cd /opt/flowdat

####. Descargar el fuente de instalación.

# en código se descarga en el directorio actual
git clone git@bitbucket.org:ikflowdat/installer.git .

####. Entrar la directorio tools.

cd tools

####. Construir el docker que se utilizará durante la instalación.

docker build --build-arg DIR_INSTALL=$(pwd) -t dind .     
# --build-arg: es la forma de pasarle parámetros al docker.
# -t: es el nombre que tendrá el contenedor.
# .: indica que el fuente se descargará en el directorio actual.
# para más información de los parámetros ejecutar "docker build --help

####. Instalamos con composer elementos adicionales.

docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind composer install     
# --build-arg: es la forma de pasarle parámetros al docker.
# -t: es el nombre que tendrá el contenedor.
# para más información de los parámetros ejecutar "docker build --help"

####. Crear los archivos necesarios para la instalción. Dentro del directorio actual se crea un nuevo directorio con el nombre de la empresa.

docker run -it -v /opt/flowdat:/opt/flowdat -v /var/run/docker.sock:/tmp/docker.sock dind make:install /opt/flowdat --client=$CLIENT
# docker run: ejecuta un comando sobre el contenedor.
# -it: significa que voy a tener un tty interativo.
# -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directorio.
# -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
# dind: es el nombre que le pusimos anteriormente al contenedor.
# make:install: es el comando que se ejecuta dentro del docker para crear los archivos.
# $CLIENT: nombre de la empresa que estoy instalando.
# --domain=DOMINIO-INSTALACION: es el nombre del dominio que se utilizará. El dominio final quedaría base.DOMINIO-INSTALACION.flowdat.com, ftth.DOMINIO-INSTALACION.flowdat.com, etc.
# para mas informacion ejecutar "docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind make:install --help"

####. Una vez dentro del docker entramos al directorio de instalación.

cd /opt/flowdat

####. Obtener los fuentes desde bitbucket

docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind get:source $(pwd)/git.ini --timeout=120
# docker run: ejecuta un comando sobre el contenedor.
# -it: significa que voy a tener un tty interativo.
# -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directorio.
# -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
# dind: es el nombre que le pusimos anteriormente al contenedor.
# get:source: es el comando que se ejecuta dentro del docker para obtener los fuentes.
# $(pwd)/git.ini: es el nombre del archivo que posee los directorios a descargar.
# para mas informacion ejecutar "docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind get:source --help"

####. Renombramos los archivos innecesarios para el nginx.

docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind fix:nginx $(pwd)
# docker run: ejecuta un comando sobre el contenedor.
# -it: significa que voy a tener un tty interativo.
# -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directorio.
# -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
# dind: es el nombre que le pusimos anteriormente al contenedor.
# fix:nginx: es el comando que se ejecuta dentro del docker para obtener los fuentes.
# $(pwd): nombre de la empresa que estoy instalando.            

####. Entramos al docker para correr ansible y terminar la configuración

docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind bash
# docker run: ejecuta un comando sobre el contenedor.
# -it: significa que voy a tener un tty interativo.
# -v $(pwd):$(pwd): monta como un volumen el directorio actual, en el contenedor bajo el mismo directorio.
# -v /var/run/docker.sock:/tmp/docker.sock: comparte el docker.sock entre los docker's.
# dind: es el nombre que le pusimos anteriormente al contenedor.
# bash: significa que se ejecutará un bash.

####. Una vez dentro del docker entramos al directorio de instalación.

cd /opt/flowdat

####. Corremos ansible para finalizar la configuración e instalación

eval $(cat mysql.host.env running.env) ansible-playbook -i inventory.ini -u root playbook.yml
# eval $(cat mysql.host.env running.env): se le pasa al ansible-playbook las variables de entorno definidas en los archivos mysql.host.env y running.env
# -i inventory.ini: se el especifica el inventory.ini          
# -u root: le digo que se ejecutarán las acciones como el usuario "root"
# playbook.yml: es el nombre del playbook a ejecutar

Los container se levantan por systemctl

Ejecutar fuera del dind

ln -sf $(pwd)/docker-compose.service /etc/systemd/system/docker-compose.service

systemctl enable docker-compose.service

Unistalls

Docker

# con sudo
sudo apt-get remove docker docker-engine docker.io docker-ce

# con root
apt-get remove docker docker-engine docker.io docker-ce

Kernel update

# agrego los repositorios
echo "deb http://ftp.us.debian.org/debian/ jessie-backports main" >> /etc/apt/sources.list
echo "deb-src http://ftp.us.debian.org/debian/ jessie-backports main" >> /etc/apt/sources.list
# actualizo la version del kernel
apt-get update ; apt-get install -t jessie-backports linux-image-amd64

Errors

Mysql no arranca

Este es un problema de permisos del directorio mysql. Realizar un chmod fuera del docker.

Unknown database 'mysql'

Por alguna razón no se creo la base de datos de mysql.
Ingreso al docker de mysql
    docker-compose exec mysql bash
Paro el servicio de mysql
    service mysql stop
Ingreso al directorio mysql
    cd /opt/flowdat/mysql
Borro todos los archivos del directorio mysql
    rm -Rf *
Inicializo nuevamente la base de datos de forma insegura. Sin password para root
    mysqld --initialize-insecure
Verifico que pueda acceder al mysql. Cuando pide el password lo dejamos en blando
    mysql -u root -p 
Sino podemos entrar, entonces hay que reiniciar el password
    apt update && apt install vi
    su mysql

    235r2342gtfsw
Cambiar el password de root, seguimos com el ejemplo

Salgo del docker
    exit
Ejecuto nuevamente el playbook (ansible)

#Nombres de branch y tag

Los branchs y tags se denominaran con vX.Y.Z, siendo la primer letra una "v" para denotar que es una versión, luego X/Y/Z son los números que la identifican.
Los branchs solo tendrán las posiciones "X" e "Y".
Los tags tendrán las posiciones "X", "Y" y "Z".

#Branch y tag de vendors

Estos pasos se deben hacer por separado, es decir, primero se debe hacer un branch y luego el tag.
Primero debemos estar situados en el directorio /opt/flowdat/tools.
Para realizar un branch debemos ejecucar la siguiente sentencia
    php cmd.php make:tag:vendors repositories.ini vX.Y --branch=true
Para realizar un tag debemos ejecucar la siguiente sentencia
    php cmd.php make:tag:vendors repositories.ini vX.Y.Z --branch=true

#Branch y tag de módulos

Primero debemos estar situados en el directorio /opt/flowdat/tools.
Ahora debemos modificar los archivos "composer.json" de cada módulo y ajustarlo a la versión deseada. Este proceso ejecuta el composer update, por lo tanto se debe tener en cuenta que se debe ejecutar en alguna máquina que posea los dockers de los módulos creados.
Para esto debemos ejecutar la siguiente sentencia
    php cmd.php composer:require modules.ini ik/* vX.Y.Z
Una vez finalizado la generación de los composer json/lock, debemos hacer un commit de los cambios y para esto ejecutamos la sentencia
    php cmd.php make:tag:vendors modules.ini vX.Y.Z