ci: actualizar pipeline con nuevas variables SSH y IPs

- 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/
This commit is contained in:
Evert Daniel Romero Garrido
2026-04-27 10:20:05 -06:00
parent defce6933d
commit 15e499d970
4 changed files with 71 additions and 26 deletions
+31
View File
@@ -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
```
+26 -26
View File
@@ -74,9 +74,9 @@ pipelines:
- ./aws/install - ./aws/install
- aws --version - aws --version
- mkdir -p ~/.ssh - 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 - 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_BOT_TOKEN="${DEV_TELEGRAM_BOT_TOKEN}"
- export TELEGRAM_CHAT_ID="${DEV_TELEGRAM_CHAT_ID}" - export TELEGRAM_CHAT_ID="${DEV_TELEGRAM_CHAT_ID}"
- bash scripts/telegram-pipeline-notify.sh start - bash scripts/telegram-pipeline-notify.sh start
@@ -178,16 +178,16 @@ pipelines:
script: script:
- set -euo pipefail - set -euo pipefail
- mkdir -p ~/.ssh - 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 - chmod 600 ~/.ssh/sacc4_key
# Actualizar authorized_keys del usuario thoth con la llave pública del pipeline # 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 # 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) DEV_PUB_KEY=$(echo "${SSH_PRIVATE_KEY_THOTH}" | ssh-keygen -y -f /dev/stdin)
ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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\"'" "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." - echo "SSH keys rotadas exitosamente."
@@ -209,12 +209,12 @@ pipelines:
fi fi
if [ "${HAS_LOCAL_JAR}" = "true" ]; then if [ "${HAS_LOCAL_JAR}" = "true" ]; then
echo "INFO: Artefacto JAR encontrado localmente. Procediendo con instalación en servidor." 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 chmod 600 ~/.ssh/sacc4_key
ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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'" "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 else
echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación." echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación."
@@ -232,13 +232,13 @@ pipelines:
- ./aws/install - ./aws/install
- aws --version - aws --version
- source scripts/aws-oidc-setup.sh dev - 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 - chmod 600 ~/.ssh/sacc4_key
- | - |
ssh -p "${DEV_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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'" "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 if [ -f terraform/terraform-outputs.json ]; then
@@ -261,7 +261,7 @@ pipelines:
- echo "=== Health Check post-deploy (DEV) ===" - echo "=== Health Check post-deploy (DEV) ==="
- | - |
export ENV=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 MAX_RETRIES=12
export RETRY_INTERVAL=10 export RETRY_INTERVAL=10
# Verificar CloudFront # Verificar CloudFront
@@ -289,9 +289,9 @@ pipelines:
- ./aws/install - ./aws/install
- aws --version - aws --version
- mkdir -p ~/.ssh - 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 - 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_BOT_TOKEN="${PROD_TELEGRAM_BOT_TOKEN}"
- export TELEGRAM_CHAT_ID="${PROD_TELEGRAM_CHAT_ID}" - export TELEGRAM_CHAT_ID="${PROD_TELEGRAM_CHAT_ID}"
- bash scripts/telegram-pipeline-notify.sh start - bash scripts/telegram-pipeline-notify.sh start
@@ -392,16 +392,16 @@ pipelines:
script: script:
- set -euo pipefail - set -euo pipefail
- mkdir -p ~/.ssh - 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 - chmod 600 ~/.ssh/sacc4_key
# Actualizar authorized_keys del usuario thoth con la llave pública del pipeline # 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 # 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) PROD_PUB_KEY=$(echo "${SSH_PRIVATE_KEY_THOTH}" | ssh-keygen -y -f /dev/stdin)
ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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\"'" "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." - echo "SSH keys rotadas exitosamente."
@@ -423,12 +423,12 @@ pipelines:
fi fi
if [ "${HAS_LOCAL_JAR}" = "true" ]; then if [ "${HAS_LOCAL_JAR}" = "true" ]; then
echo "INFO: Artefacto JAR encontrado localmente. Procediendo con instalación en servidor." 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 chmod 600 ~/.ssh/sacc4_key
ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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'" "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 else
echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación." echo "INFO: No se encontró artefacto JAR localmente. Saltando instalación."
@@ -467,13 +467,13 @@ pipelines:
else else
echo "WARNING: No se encontró prod.tfplan. Terraform apply saltado." echo "WARNING: No se encontró prod.tfplan. Terraform apply saltado."
fi 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 - chmod 600 ~/.ssh/sacc4_key
- | - |
ssh -p "${PROD_SSH_PORT_PROYECTOSACC:-22}" \ ssh -p "22" \
-i ~/.ssh/sacc4_key \ -i ~/.ssh/sacc4_key \
-o StrictHostKeyChecking=no \ -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'" "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 if [ -f terraform/terraform-outputs.json ]; then
@@ -496,7 +496,7 @@ pipelines:
- echo "=== Health Check post-deploy (PROD) ===" - echo "=== Health Check post-deploy (PROD) ==="
- | - |
export ENV=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 MAX_RETRIES=12
export RETRY_INTERVAL=10 export RETRY_INTERVAL=10
# Verificar CloudFront # Verificar CloudFront
+7
View File
@@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAdkhvJ7Il4Yrw1Zqu9P1PcFbdc2HciYqb7tCaj60a+vwAAAJhowcCaaMHA
mgAAAAtzc2gtZWQyNTUxOQAAACAdkhvJ7Il4Yrw1Zqu9P1PcFbdc2HciYqb7tCaj60a+vw
AAAEBaErHCg+OQP9abpbe9+Eee80Cncbntxz5TXkuqBkA0xx2SG8nsiXhivDVmq70/U9wV
t1zYdyJipvu0JqPrRr6/AAAAEG9zaXJpc0BjY3NvZnQuYWkBAgMEBQ==
-----END OPENSSH PRIVATE KEY-----
+7
View File
@@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACC8ad1D22SDWfkWGeO9qwGKrBFJmLe68Kk90aF/skUgYAAAAJimLIkZpiyJ
GQAAAAtzc2gtZWQyNTUxOQAAACC8ad1D22SDWfkWGeO9qwGKrBFJmLe68Kk90aF/skUgYA
AAAEC+p75hAW4PuYLQcy6dlR0taqeoNNFknaUbOHx7kdEKYrxp3UPbZINZ+RYZ472rAYqs
EUmYt7rwqT3RoX+yRSBgAAAAD3Rob3RoQGNjc29mdC5haQECAwQFBg==
-----END OPENSSH PRIVATE KEY-----