|
6 anos atrás | |
---|---|---|
.. | ||
keys | 7 anos atrás | |
mysql | 7 anos atrás | |
src | 6 anos atrás | |
Dockerfile | 7 anos atrás | |
ONU.json | 7 anos atrás | |
cmd.php | 7 anos atrás | |
composer.json | 7 anos atrás | |
composer.lock | 7 anos atrás | |
composer.phar | 7 anos atrás | |
docker-compose.service | 7 anos atrás | |
execute.sh | 7 anos atrás | |
grafana.env | 7 anos atrás | |
installer.sh | 7 anos atrás | |
mysql_scripts.sql | 7 anos atrás | |
playbook.yml | 6 anos atrás | |
readme.md | 6 anos atrás | |
repositories.ini | 7 anos atrás | |
user_system.json | 7 anos atrás |
#Requerimientos
#Instalación de requerimientos:
apt-get update && apt-get install curl git python
DIR_INSTALL=$(pwd) -t dind
# descargo el archivo get-pip.py desde una url
curl https://bootstrap.pypa.io/get-pip.py | python
# actualizo pip
pip install -U pip setuptools
# 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
pip install docker-compose
####. 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 instalación. Dentro del directorio actual se crea un nuevo directorio con el nombre de la empresa.
####. Poner el nombre del cliente, de lo contrario no va a funcionar correctamente!!! ####. Cambiar --client=$CLIENT por alguno de los ejemplos
####.--client=fd3 ####.--client=testfernando ####.--client=testfer , etc.
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.
# --add-nginx-links: permite crear links nginx en los servicios de los módulos web de FD3, sirve para instalaciones en modo desarrollo. Si no se agrega, por defecto no los crea.
# --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
ln -sf $(pwd)/docker-compose.service /etc/systemd/system/docker-compose.service
systemctl enable docker-compose.service
# 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
# 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
https://ikflowdat.atlassian.net/wiki/spaces/DL/pages/9469968
Este es un problema de permisos del directorio mysql. Realizar un chmod fuera del docker.
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)
Por algún motivo Base no es capaz de alterar los permisos de la caché durante la instalación.
Cambiar los permisos mediante:
cd /opt/flowdat/base
chmod -R 777 var/cache/ var/logs/ var/sessions/
Por alguna razón los assets manejados por assetic no se copian durante la instalación.
Ingresar al container Base:
cd /opt/flowdat/
docker-compose exec base bash
Luego correr:
bin/console assetic:dump
#PROCEDIMIENTOS PARA GENERAR BRANCH'S Y TAG'S
##Branch y tag de módulos
Cuando me conecto al servidor, debo conectarme con un ssh -A ... para pasarle mis credenciales actuales.
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.
Si no poseo instalado php (es mejor ejecutarlo de esta forma por el tema de permisos):
Nos situamos en el directorio
cd /opt/flowdat
Ejecuto el dind pasando mis credenciales actuales al docker. Tomar como precaución, que debo tener cargada la de bitbucket de escritura
docker run -it -v $(pwd):$(pwd) -v /var/run/docker.sock:/tmp/docker.sock dind bash
Cargar la key para escribir en bitbucket. Sino posee una, se puede cargar de la siguiente forma.
eval $(ssh-agent); ssh-add /opt/flowdat/keys/gogs.drone.id_rsa
Ejecuto la sentencia para cambiar el composer y actualizar el fuente
php cmd.php composer:require ../modules.ini ik/* vX.Y.Z --composer_update=true --pull=master
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:modules ../modules.ini vX.Y.Z
Si poseo instalado php:
Para esto debemos ejecutar la siguiente sentencia
php cmd.php composer:require ../modules.ini ik/* vX.Y.Z --composer_update=true --pull=master
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