6.7 KiB
6.7 KiB
11 - Checklist: Primer Deploy
Lista de verificación de todo lo que debe estar listo antes de hacer el primer despliegue de
proyectosacc.
1. Infraestructura AWS
- La instancia EC2 T3.small con Ubuntu 22.04 está creada y encendida.
- La EC2 tiene un Security Group que permite:
- Puerto
22(SSH) desde IPs confiables. - Puerto
80(HTTP) desde cualquier lugar (solo para la API). - Puerto
443(HTTPS) desde cualquier lugar (solo para la API).
- Puerto
- La RDS MariaDB (
db.t3.micro) está creada y accesible desde la VPC. - El bucket S3 para artefactos de la API está creado y la EC2 tiene permisos para leer/escribir en él.
- El bucket S3 para el frontend React está creado con Static Website Hosting habilitado.
- El bucket S3 del frontend tiene versionamiento de objetos habilitado.
- La distribución CloudFront está creada, apunta al bucket S3 del frontend, tiene HTTPS y un behavior
/api/*que apunta a la EC2. - El registro Route 53
sacc.ccsoft.mxapunta a CloudFront (no a la IP de la EC2). - El certificado ACM para
sacc.ccsoft.mxestá emitido, válido y adjunto a CloudFront. - El bucket S3 del frontend tiene un bucket policy que permite leer objetos solo a CloudFront (OAI/OAC).
2. Servidor EC2 (configuración interna)
- El usuario
ubuntupuede conectarse por SSH. - El usuario
thothestá creado con su directorio/home/thoth. - El usuario
osirisestá creado con su directorio/home/osiris. - Los directorios de despliegue existen:
/home/thoth/deploy/artifacts/backup /home/thoth/deploy/artifacts/current /home/thoth/deploy/artifacts/logs /home/thoth/deploy/artifacts/pids - Nginx está instalado, configurado como proxy inverso solo para la API (
/api→localhost:8080) y corriendo. - Java (
openjdk-21-jdk) está instalado. - AWS CLI está instalado y configurado.
- Los permisos de carpetas están correctos (
thothyosirispueden acceder donde deben).
3. Llaves SSH
- Se generó el par de llaves SSH dedicado para
proyectosacc(no se reutilizan llaves de otros proyectos). - La llave privada está codificada en base64 y guardada en Bitbucket Repository Variables (
PROYECTOSACC_SSH_KEY). - La llave pública está en
/home/thoth/.ssh/authorized_keys(inyectada vía Terraformuser_data). - Se generó el par de llaves SSH para que
thothclone repositorios desde Bitbucket. - Las Access Keys correspondientes están configuradas en los repositorios de Bitbucket (
ci-cd-commons,ci-cd-saac4). - Se probó la conexión SSH desde el pipeline (o manualmente) y funciona.
4. Base de datos
- La base de datos RDS está accesible desde la EC2.
- Se creó el esquema o las tablas necesarias para la aplicación.
- La aplicación tiene configurada la URL de conexión a la base de datos.
- Las credenciales de la base de datos están guardadas de forma segura (no en el código fuente).
5. Pipeline de Bitbucket
- El archivo
bitbucket-pipelines.ymlestá en la raíz del repositorio. - Los 7 pasos del pipeline están configurados correctamente:
- Paso 4 compila tanto el frontend React (
npm run build) como la API backend. - Paso 5 sube el frontend a S3 y el
.jarde la API a S3. - Paso 7 invalida la caché de CloudFront y reinicia la API.
- Paso 4 compila tanto el frontend React (
- Las variables de entorno están creadas en Bitbucket:
PROYECTOSACC_SSH_KEYPROYECTOSACC_SERVER_IPPROYECTOSACC_SSH_PORTPROYECTOSACC_SERVER_USERPROYECTOSACC_TELEGRAM_BOT_TOKENPROYECTOSACC_TELEGRAM_CHAT_IDAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYCLOUDFRONT_DISTRIBUTION_IDS3_FRONTEND_BUCKET
- Todas las variables sensibles están marcadas como Secured 🔒.
- El pipeline puede clonar los repositorios necesarios (
ci-cd-commons,ci-cd-saac4, etc.).
6. Scripts de despliegue
- El script
deploy-frontend-s3.shexiste y puede subir archivos a S3 + invalidar CloudFront. - El script
setup/deploy.shexiste en el servidor y tiene permisos de ejecución (solo para la API). - El script
health-check.shexiste y funciona correctamente. - El script
rollback.shexiste y tiene al menos un backup de prueba de la API. - El script
notify-telegram.shenvía mensajes de prueba exitosamente.
7. Aplicación SACC
- El código fuente del frontend React compila sin errores (
npm run build). - El código fuente de la API backend compila sin errores localmente.
- El pipeline puede generar el artefacto final del frontend (
build/) y de la API (.jar). - El artefacto de la API se puede ejecutar manualmente en la EC2.
- La API responde en
http://localhost:8080/actuator/healthcuando corre localmente en la EC2.
8. Dominio y SSL
- El dominio
sacc.ccsoft.mxresuelve a CloudFront (verifica condigonslookup). - CloudFront sirve el frontend React por HTTPS sin errores de certificado.
- Nginx en la EC2 redirige las peticiones de la API correctamente (
/api→localhost:8080). - El endpoint
https://sacc.ccsoft.mx/api/actuator/healthresponde correctamente. - Al entrar a
https://sacc.ccsoft.mxse ve la interfaz de SACC (o al menos una página de prueba del frontend).
9. Seguridad
- El archivo
.env(si existe) está en.gitignore. - No hay contraseñas, tokens ni llaves privadas en el código del repositorio.
- No se usa
sshpassni acceso SSH por contraseña. - El puerto SSH (22) del Security Group no está abierto a
0.0.0.0/0. - La base de datos RDS no es pública (solo accesible desde la VPC).
- El bucket S3 del frontend NO es público directamente; solo CloudFront accede a él (OAI/OAC).
- Los logs sensibles no se imprimen en los archivos de configuración del pipeline.
10. Comunicación y documentación
- El equipo de desarrollo sabe que el primer deploy se va a realizar.
- Hay un canal de comunicación activo (Telegram, Slack, etc.) para alertas.
- Este checklist ha sido revisado por al menos una persona más.
- Se tiene planificado un horario de bajo tráfico para el primer deploy.
¿Listo?
Si marcaste todas las 60 casillas, estás listo para hacer el primer deploy. 🚀
Si te falta alguna, resuélvela antes de continuar. Es mejor tardar un poco más y hacerlo bien, que apurarse y dejar el servicio caído.
Anterior: 10-runbook-rollback.md