Instrucciones cloud
Para el despliegue en la nube se utilizará los template de Ansible, Terraform y el workflow terraform-ansible incluido en el repositorio deployment-kit.
Esta sección explica cómo desplegar automáticamente tu aplicación utilizando infraestructura en la nube, actualmente compatible tanto con AWS como con DigitalOcean.
El proceso está completamente automatizado mediante GitHub Actions, lo que permite una configuración flexible y reproducible según el proveedor que elijas.
Prerrequisitos
Antes de comenzar, asegúrate de contar con lo siguiente:
Cuenta de GitHub con acceso a GitHub Actions
Cuenta en algún proveedor cloud compatible (AWS o DigitalOcean)
Par de claves SSH para conexión remota (
.pemy.pub)
Para generar tu par de claves en AWS, consulta la documentación oficial sobre cómo crear un par de claves para la instancia EC2.
Para generar tu par de claves en DigitalOcean, consulta la documentación oficial sobre cómo crear claves SSH con OpenSSH en Linux.
Credenciales de acceso para el proveedor que utilizarás:
Para AWS: claves de acceso (
AWS_ACCESS_KEY_IDyAWS_SECRET_ACCESS_KEY)Para DigitalOcean: token de acceso personal (API)
Para obtener tus claves de acceso en AWS, consulta la documentación oficial sobre cómo crear las claves de acceso para el usuario raíz.
Para obtener tus claves de acceso en DigitalOcean, consulta la documentación oficial sobre cómo crear un token personal de acceso.
Pasos para desplegar
Crea secretos en GitHub Actions
Accede a tu repositorio y registra los siguientes secretos en:
Settings > Secrets and variables > Actions > New repository secret
Para AWS es necesario tener los siguientes secretos:
Para DigitalOcean es necesario tener los siguientes secretos:
Para añadir tu clave pública SSH y obtener su fingerprint, sigue la guía oficial de DigitalOcean para añadir claves SSH.
Es importante que el secreto DO_INLINE_PUBLIC_KEY contenga el fingerprint, no el contenido de la clave pública.
También puedes definir variables de entorno personalizadas según las necesidades específicas de tu aplicación.
Estas variables son opcionales, y resultan útiles para configurar bases de datos, servicios externos o cualquier parámetro sensible que no quieras dejar hardcodeado.
En particular, estas variables son utilizadas por el archivo docker-compose.yml para construir dinámicamente los servicios de tu aplicación.
Por ejemplo:
Las variables de entorno que definas como secretos deben ser referenciadas tanto en el workflow terraform-ansible.yml, como también en el playbook deploy_cloud.yml, para que Ansible pueda inyectarlas automáticamente en tu archivo .env.
Estos pasos se explican con más detalle en la sección de configuración.
Copia los templates de Ansible, Terraform y Workflow
Ve al repositorio deployment-kit e ingresa a la carpeta templates.
Copia la carpeta ansible y la correspondiente a tu proveedor cloud:
terraform/aws o terraform/digitalocean, y colócalas dentro del directorio de despliegue.
Para el workflow, copia el archivo terraform-ansible.yml dentro de la carpeta .github/workflows de tu repositorio.
Configura los templates
Revisa la sección Configuración para adaptar los archivos a tu proyecto.
Si necesitas ejemplos de cómo pueden ser configuradas las plantillas, puedes revisar el directorio deployments dentro del repositorio deployment-kit. Ahí encontrarás aplicaciones reales donde se han aplicado las plantillas. Además, los ejemplos de workflows se encuentran en la carpeta .github en la raíz del repositorio.
Ejecuta el workflow
En tu repositorio de GitHub, ve a la pestaña Actions en la barra superior.
Busca y selecciona el workflow terraform-ansible.yml llamado "Despliegue automatizado en la nube" (o el nombre que le hayas asignado al archivo).
Haz clic en el botón "Run workflow".
Este workflow está diseñado para ser ejecutado manualmente desde GitHub y como configuración inicial (no para actualizar la aplicación).
Si se vuelve a ejecutar, se duplicará la instancia y los recursos. Asegurate de eliminar la instancia anterior antes de volver a ejecutar el workflow.
Si todo ha funcionado correctamente, deberías poder acceder a tu aplicación desde el navegador con la IP pública de tu instancia (http(s)://[tu-ip-o-dominio]/).
Una vez finalizado el despliegue de tu aplicación, elimina manualmente la regla del puerto SSH (22) en el Security Group o Firewall si ya no utilizarás más GitHub Actions. Mantener este puerto abierto innecesariamente representa un riesgo de seguridad.
Last updated