From d96b98b4de59f0c0b09dffd17d908d2f29973fe1 Mon Sep 17 00:00:00 2001 From: Nicolas Arenas Date: Mon, 4 Nov 2024 21:18:37 +0100 Subject: [PATCH] - Move config file for ogCore to proper directory - Create prestart function to configure oggui-app - Create oggui provision script --- component-installer.sh | 25 +++++-------------------- provision_ogcore.sh | 17 ++++++++++++----- provision_oggui.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 provision_oggui.sh diff --git a/component-installer.sh b/component-installer.sh index 4c9e0a0..5e0535b 100644 --- a/component-installer.sh +++ b/component-installer.sh @@ -43,29 +43,11 @@ EOF function install_oggui_docker() { - # Leer el JSON y extraer los valores con jq - ogcore_ip=$(jq -r '.ogcore_ip' /opt/opengnsys/ogGui/installer/config.json) - if [ -z "$ogcore_ip" ]; then - # Obtiene el nombre del interfaz asociado a la ruta por defecto - interface=$(ip route | grep default | awk '{print $5}') - - # Si se encuentra el interfaz, obtiene su dirección IP - if [ -n "$interface" ]; then - ip_address=$(ip -o -4 addr show "$interface" | awk '{print $4}' | cut -d'/' -f1) - ogcore_ip=$ip_address - else - echo "No se pudo determinar el interfaz asociado a la ruta por defecto." - exit 1 - fi - fi - + # Sacar la IP del ogCore de la configuración oggui_version=$(jq -r '.container_version' /opt/opengnsys/ogGui/installer/config.json) # Exportar los valores como variables de entorno - export OGCORE_IP="$ogcore_ip" ENV_DIR=/opt/opengnsys/ogGui/etc/ ENV_FILE=$ENV_DIR/.env - mkdir -p $ENV_DIR - echo "NG_APP_BASE_API_URL=$OGCORE_IP" > $ENV_FILE cat < /etc/systemd/system/oggui-app.service [Unit] @@ -75,7 +57,7 @@ Requires=docker.service [Service] Restart=always - +ExecStartPre=/opengnsys-installer/provision_oggui.sh ExecStart=/usr/bin/docker run --rm --name ogGui-app -p 4200:4200 -v $ENV_FILE:/app/.env opengnsys/oggui:$oggui_version ExecStop=/usr/bin/docker stop ogGui-app @@ -125,6 +107,9 @@ do OGCORE_BRANCH=main container_version=$(jq -r '.container_version' /opt/opengnsys/ogCore/installer/config.json) git clone --branch "$OGCORE_BRANCH" "$OGCORE_REPO" "$component_dir/repo" + # Copy the docker-compose-deploy.yml file to /opt/opengnsys/ogCore/etc/ + mkdir -p $component_dir/etc/ + cp $component_dir/repo/docker-compose-deploy.yml $component_dir/etc/ sed -i "s/static/$container_version/g" $component_dir/repo/docker-compose-deploy.yml echo - ogCore >> /etc/issue install_docker diff --git a/provision_ogcore.sh b/provision_ogcore.sh index 38f777a..b1d430d 100644 --- a/provision_ogcore.sh +++ b/provision_ogcore.sh @@ -2,23 +2,30 @@ cd /opt/opengnsys/ogCore/repo/ +# Preparar el fichero .yaml +CONF_DIR=/opt/opengnsys/ogCore/etc/ +mkdir -p $CONF_DIR + +# Copiar el fichero de configuración a CONF_DIR +cp docker-compose-deploy.yml $CONF_DIR/ + if [ -f /opt/opengnsys/ogCore/installer/.deployed ]; then echo "ogCore ya instalado" exit 0 fi -while ! docker compose -f docker-compose-deploy.yml ps --format json |jq -r '"\(.Name) \(.State)"' |grep -q 'ogcore-php running'; do +while ! docker compose -f $CONF_DIR/docker-compose-deploy.yml ps --format json |jq -r '"\(.Name) \(.State)"' |grep -q 'ogcore-php running'; do sleep 2 done adminuser=$(jq -r '.username' /opt/opengnsys/ogCore/installer/config.json) adminpass=$(jq -r '.password' /opt/opengnsys/ogCore/installer/config.json) -docker compose -f docker-compose-deploy.yml exec php composer install -docker compose -f docker-compose-deploy.yml exec php php bin/console lexik:jwt:generate-keypair --overwrite -docker compose -f docker-compose-deploy.yml exec php php bin/console doctrine:migrations:migrate --no-interaction +docker compose -f $CONF_DIR/docker-compose-deploy.yml exec php composer install +docker compose -f $CONF_DIR/docker-compose-deploy.yml exec php php bin/console lexik:jwt:generate-keypair --overwrite +docker compose -f $CONF_DIR/docker-compose-deploy.yml exec php php bin/console doctrine:migrations:migrate --no-interaction ## TODO we need to feed $adminuser and $adminpass to doctrine:fixtures:load somehow -docker compose -f docker-compose-deploy.yml exec php php bin/console doctrine:fixtures:load --no-interaction +docker compose -f $CONF_DIR/docker-compose-deploy.yml exec php php bin/console doctrine:fixtures:load --no-interaction # Provision user admin diff --git a/provision_oggui.sh b/provision_oggui.sh new file mode 100644 index 0000000..05736f3 --- /dev/null +++ b/provision_oggui.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# preparar el fichero .env +ENV_DIR=/opt/opengnsys/ogGui/etc/ +ENV_FILE=$ENV_DIR/.env +mkdir -p $ENV_DIR + +# Comprobar si ya se ha instalado ogCore +if [ -f /opt/opengnsys/ogGui/installer/.deployed ]; then + echo "ogCore ya instalado" + exit 0 +fi + +# Sacar la IP del ogCore de la configuración +ogcore_ip=$(jq -r '.ogcore_ip' /opt/opengnsys/ogGui/installer/config.json) +export OGCORE_IP="$ogcore_ip" + +# Si no se ha configurado la IP del ogCore, se intenta obtener de la interfaz de red +if [ -z "$ogcore_ip" ]; then + # Obtiene el nombre del interfaz asociado a la ruta por defecto + interface=$(ip route | grep default | awk '{print $5}') + + # Si se encuentra el interfaz, obtiene su dirección IP + if [ -n "$interface" ]; then + ip_address=$(ip -o -4 addr show "$interface" | awk '{print $4}' | cut -d'/' -f1) + ogcore_ip=$ip_address + # Si no se ha configurado la IP del ogCore, se escribe en el fichero .env + echo "NG_APP_BASE_API_URL=https://$OGCORE_IP:8443" > $ENV_FILE + exit 0 + else + echo "No se pudo determinar el interfaz asociado a la ruta por defecto." + exit 1 + fi +fi + + +# Si se ha configurado la IP del ogCore, se escribe en el fichero .env +echo "NG_APP_BASE_API_URL=$OGCORE_IP" > $ENV_FILE + +touch /opt/opengnsys/ogGui/installer/.deployed