From 15e499d97078dec0d5d9132179a2a2dc4587b578 Mon Sep 17 00:00:00 2001 From: Evert Daniel Romero Garrido Date: Mon, 27 Apr 2026 10:20:05 -0600 Subject: [PATCH] ci: actualizar pipeline con nuevas variables SSH y IPs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reemplaza DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC por SSH_PRIVATE_KEY_THOTH - Reemplaza PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC por SSH_PRIVATE_KEY_THOTH - Reemplaza DEV_SERVER_IP_PROYECTOSACC por DEV_INSTANCE_IP - Reemplaza PROD_SERVER_IP_PROYECTOSACC por PROD_INSTANCE_IP - Elimina dependencia de base64 para llaves SSH (ahora texto plano) - Agrega documentación de conexión en DATOS_CONEXION.md - Incluye llaves SSH generadas en directorio keys/ --- DATOS_CONEXION.md | 31 ++++++++++++++++++++++++ bitbucket-pipelines.yml | 52 ++++++++++++++++++++--------------------- keys/osiris_key | 7 ++++++ keys/thoth_key | 7 ++++++ 4 files changed, 71 insertions(+), 26 deletions(-) create mode 100644 DATOS_CONEXION.md create mode 100644 keys/osiris_key create mode 100644 keys/thoth_key diff --git a/DATOS_CONEXION.md b/DATOS_CONEXION.md new file mode 100644 index 0000000..f0c768d --- /dev/null +++ b/DATOS_CONEXION.md @@ -0,0 +1,31 @@ +# Datos de Conexión SSH para CI/CD - Proyecto SACC4 + +## Servidores + +| Entorno | IP | Usuario | Llave | +|---------|-----|---------|-------| +| DEV | 78.12.135.184 | thoth | bitbucket_thoth | +| DEV | 78.12.135.184 | osiris | bitbucket_osiris | +| PROD | 78.12.139.51 | thoth | bitbucket_thoth | +| PROD | 78.12.139.51 | osiris | bitbucket_osiris | + +## Variables de Bitbucket + +``` +DEV_INSTANCE_IP=78.12.135.184 +PROD_INSTANCE_IP=78.12.139.51 +SSH_PRIVATE_KEY_THOTH=(contenido de keys/thoth_key) +SSH_PRIVATE_KEY_OSIRIS=(contenido de keys/osiris_key) +``` + +## Archivos de Llaves +- `keys/thoth_key` - Llave privada para usuario thoth +- `keys/thoth_key.pub` - Llave pública para usuario thoth +- `keys/osiris_key` - Llave privada para usuario osiris +- `keys/osiris_key.pub` - Llave pública para usuario osiris + +## Conexión de Prueba +```bash +ssh -i keys/thoth_key thoth@78.12.135.184 +ssh -i keys/osiris_key osiris@78.12.135.184 +``` diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 0e7b807..dc5203d 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -74,9 +74,9 @@ pipelines: - ./aws/install - aws --version - mkdir -p ~/.ssh - - echo "${DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key - - ssh-keyscan -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" "${DEV_SERVER_IP_PROYECTOSACC}" >> ~/.ssh/known_hosts 2>/dev/null || true + - ssh-keyscan -p "22" "${DEV_INSTANCE_IP}" >> ~/.ssh/known_hosts 2>/dev/null || true - export TELEGRAM_BOT_TOKEN="${DEV_TELEGRAM_BOT_TOKEN}" - export TELEGRAM_CHAT_ID="${DEV_TELEGRAM_CHAT_ID}" - bash scripts/telegram-pipeline-notify.sh start @@ -178,16 +178,16 @@ pipelines: script: - set -euo pipefail - mkdir -p ~/.ssh - - echo "${DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key # Actualizar authorized_keys del usuario thoth con la llave pública del pipeline # Esto asegura que solo el pipeline actual pueda acceder, rotando llaves automáticamente - | - DEV_PUB_KEY=$(echo "${DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d | ssh-keygen -y -f /dev/stdin) - ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ + DEV_PUB_KEY=$(echo "${SSH_PRIVATE_KEY_THOTH}" | ssh-keygen -y -f /dev/stdin) + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${DEV_SERVER_USER_PROYECTOSACC:-thoth}@${DEV_SERVER_IP_PROYECTOSACC}" \ + "thoth@${DEV_INSTANCE_IP}" \ "bash -c 'mkdir -p /home/thoth/.ssh && chmod 700 /home/thoth/.ssh && echo \"${DEV_PUB_KEY}\" > /home/thoth/.ssh/authorized_keys && chmod 600 /home/thoth/.ssh/authorized_keys && chown -R thoth:thoth /home/thoth/.ssh && echo \"INFO: Authorized keys actualizado con llave del pipeline\"'" - echo "SSH keys rotadas exitosamente." @@ -209,12 +209,12 @@ pipelines: fi if [ "${HAS_LOCAL_JAR}" = "true" ]; then echo "INFO: Artefacto JAR encontrado localmente. Procediendo con instalación en servidor." - echo "${DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key chmod 600 ~/.ssh/sacc4_key - ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${DEV_SERVER_USER_PROYECTOSACC:-thoth}@${DEV_SERVER_IP_PROYECTOSACC}" \ + "thoth@${DEV_INSTANCE_IP}" \ "bash -c 'mkdir -p /home/thoth/deploy/artifacts/current && aws s3 cp ${JAR_S3_URI} /home/thoth/deploy/artifacts/current/proyectosacc-app.jar && chown osiris:osiris /home/thoth/deploy/artifacts/current/proyectosacc-app.jar'" else echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación." @@ -232,13 +232,13 @@ pipelines: - ./aws/install - aws --version - source scripts/aws-oidc-setup.sh dev - - echo "${DEV_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key - | - ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${DEV_SERVER_USER_PROYECTOSACC:-thoth}@${DEV_SERVER_IP_PROYECTOSACC}" \ + "thoth@${DEV_INSTANCE_IP}" \ "bash -c 'if [ -f /home/thoth/deploy/setup/deploy.sh ]; then bash /home/thoth/deploy/setup/deploy.sh; else echo \"INFO: No se encontró script de deploy. Saltando deploy backend.\"; fi'" - | if [ -f terraform/terraform-outputs.json ]; then @@ -261,7 +261,7 @@ pipelines: - echo "=== Health Check post-deploy (DEV) ===" - | export ENV=dev - export HEALTH_URL="http://${DEV_SERVER_IP_PROYECTOSACC}:8080/actuator/health" + export HEALTH_URL="http://${DEV_INSTANCE_IP}:8080/actuator/health" export MAX_RETRIES=12 export RETRY_INTERVAL=10 # Verificar CloudFront @@ -289,9 +289,9 @@ pipelines: - ./aws/install - aws --version - mkdir -p ~/.ssh - - echo "${PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key - - ssh-keyscan -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" "${PROD_SERVER_IP_PROYECTOSACC}" >> ~/.ssh/known_hosts 2>/dev/null || true + - ssh-keyscan -p "22" "${PROD_INSTANCE_IP}" >> ~/.ssh/known_hosts 2>/dev/null || true - export TELEGRAM_BOT_TOKEN="${PROD_TELEGRAM_BOT_TOKEN}" - export TELEGRAM_CHAT_ID="${PROD_TELEGRAM_CHAT_ID}" - bash scripts/telegram-pipeline-notify.sh start @@ -392,16 +392,16 @@ pipelines: script: - set -euo pipefail - mkdir -p ~/.ssh - - echo "${PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key # Actualizar authorized_keys del usuario thoth con la llave pública del pipeline # Esto asegura que solo el pipeline actual pueda acceder, rotando llaves automáticamente - | - PROD_PUB_KEY=$(echo "${PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d | ssh-keygen -y -f /dev/stdin) - ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ + PROD_PUB_KEY=$(echo "${SSH_PRIVATE_KEY_THOTH}" | ssh-keygen -y -f /dev/stdin) + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${PROD_SERVER_USER_PROYECTOSACC:-thoth}@${PROD_SERVER_IP_PROYECTOSACC}" \ + "thoth@${PROD_INSTANCE_IP}" \ "bash -c 'mkdir -p /home/thoth/.ssh && chmod 700 /home/thoth/.ssh && echo \"${PROD_PUB_KEY}\" > /home/thoth/.ssh/authorized_keys && chmod 600 /home/thoth/.ssh/authorized_keys && chown -R thoth:thoth /home/thoth/.ssh && echo \"INFO: Authorized keys actualizado con llave del pipeline\"'" - echo "SSH keys rotadas exitosamente." @@ -423,12 +423,12 @@ pipelines: fi if [ "${HAS_LOCAL_JAR}" = "true" ]; then echo "INFO: Artefacto JAR encontrado localmente. Procediendo con instalación en servidor." - echo "${PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key chmod 600 ~/.ssh/sacc4_key - ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${PROD_SERVER_USER_PROYECTOSACC:-thoth}@${PROD_SERVER_IP_PROYECTOSACC}" \ + "thoth@${PROD_INSTANCE_IP}" \ "bash -c 'mkdir -p /home/thoth/deploy/artifacts/current && aws s3 cp ${JAR_S3_URI} /home/thoth/deploy/artifacts/current/proyectosacc-app.jar && chown osiris:osiris /home/thoth/deploy/artifacts/current/proyectosacc-app.jar'" else echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación." @@ -467,13 +467,13 @@ pipelines: else echo "WARNING: No se encontró prod.tfplan. Terraform apply saltado." fi - - echo "${PROD_SSH_PRIVATE_KEY_THOTH_PROYECTOSACC}" | base64 -d > ~/.ssh/sacc4_key + - echo "${SSH_PRIVATE_KEY_THOTH}" > ~/.ssh/sacc4_key - chmod 600 ~/.ssh/sacc4_key - | - ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ + ssh -p "22" \ -i ~/.ssh/sacc4_key \ -o StrictHostKeyChecking=no \ - "${PROD_SERVER_USER_PROYECTOSACC:-thoth}@${PROD_SERVER_IP_PROYECTOSACC}" \ + "thoth@${PROD_INSTANCE_IP}" \ "bash -c 'if [ -f /home/thoth/deploy/setup/deploy.sh ]; then bash /home/thoth/deploy/setup/deploy.sh; else echo \"INFO: No se encontró script de deploy. Saltando deploy backend.\"; fi'" - | if [ -f terraform/terraform-outputs.json ]; then @@ -496,7 +496,7 @@ pipelines: - echo "=== Health Check post-deploy (PROD) ===" - | export ENV=prod - export HEALTH_URL="http://${PROD_SERVER_IP_PROYECTOSACC}:8080/actuator/health" + export HEALTH_URL="http://${PROD_INSTANCE_IP}:8080/actuator/health" export MAX_RETRIES=12 export RETRY_INTERVAL=10 # Verificar CloudFront diff --git a/keys/osiris_key b/keys/osiris_key new file mode 100644 index 0000000..be74df0 --- /dev/null +++ b/keys/osiris_key @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAdkhvJ7Il4Yrw1Zqu9P1PcFbdc2HciYqb7tCaj60a+vwAAAJhowcCaaMHA +mgAAAAtzc2gtZWQyNTUxOQAAACAdkhvJ7Il4Yrw1Zqu9P1PcFbdc2HciYqb7tCaj60a+vw +AAAEBaErHCg+OQP9abpbe9+Eee80Cncbntxz5TXkuqBkA0xx2SG8nsiXhivDVmq70/U9wV +t1zYdyJipvu0JqPrRr6/AAAAEG9zaXJpc0BjY3NvZnQuYWkBAgMEBQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/keys/thoth_key b/keys/thoth_key new file mode 100644 index 0000000..59739dc --- /dev/null +++ b/keys/thoth_key @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACC8ad1D22SDWfkWGeO9qwGKrBFJmLe68Kk90aF/skUgYAAAAJimLIkZpiyJ +GQAAAAtzc2gtZWQyNTUxOQAAACC8ad1D22SDWfkWGeO9qwGKrBFJmLe68Kk90aF/skUgYA +AAAEC+p75hAW4PuYLQcy6dlR0taqeoNNFknaUbOHx7kdEKYrxp3UPbZINZ+RYZ472rAYqs +EUmYt7rwqT3RoX+yRSBgAAAAD3Rob3RoQGNjc29mdC5haQECAwQFBg== +-----END OPENSSH PRIVATE KEY-----