Implementación de Estado Remoto en Terraform con GitHub Actions

Clase 36 de 37Curso de Terraform

Resumen

¿Cómo configurar un estado remoto con Github Actions y Terraform?

Establecer un estado remoto es esencial para un manejo eficiente de la infraestructura como código. Este proceso implica almacenar el estado de la infraestructura en un servicio de almacenamiento en la nube, lo que facilita la colaboración y mantiene todo bajo control incluso cuando utilizamos herramientas como Github Actions y Terraform.

¿Cómo almacenar el estado remoto en Azure?

Para preservar y gestionar el estado remoto usando Azure, es necesario seguir algunos pasos clave:

  1. Crear un contenedor de almacenamiento: Identifica tu cuenta de almacenamiento de Azure. Luego, dentro de esta, crea un contenedor específico para almacenar estados remotos de Terraform. En este caso, el contenedor se nombró github-actions-state.

  2. Generar un SAS Token: Este token permite el acceso al contenedor de almacenamiento. Configura un contrato de acceso compartido (SAS) desde Azure y defínelo para tener acceso de solo lectura. Elige un periodo de expiración razonable—una semana generalmente es adecuado para pruebas.

  3. Configurar Terraform: Incluye un archivo backend.tf en tu proyecto. Este archivó coordina la comunicación entre Terraform y el contenedor de almacenamiento en Azure. Aquí, asegúrate de precisar el contenedor correcto y usar el SAS Token.

// Ejemplo de contenido del archivo backend.tf
terraform {
  backend "azurerm" {
    storage_account_name = "<tu_nombre_de_cuenta>"
    container_name       = "github-actions-state"
    key                  = "terraform.tfstate"
  }
}

¿Cómo integrar los secretos en GitHub?

GitHub facilita el manejo seguro de secretos necesarios para despliegues automáticos con Actions:

  1. Crear un secreto en GitHub: Dirígete a la sección de ajustes de tu repositorio, bajo "Secrets", agrega un secreto nuevo llamado SAS_TOKEN, asignándole el valor del SAS Token generado previamente.

  2. Actualizar el archivo de configuración de GitHub Actions: En tu flujo de trabajo de GitHub Actions, configura el uso del SAS_TOKEN para inicializar Terraform.

// Ejemplo de configuración YAML
- name: Set up Terraform
  run: terraform init -backend-config="SAS_TOKEN=${{ secrets.SAS_TOKEN }}"

¿Cómo realizar cambios y confirmar desde la terminal?

Cada cambio en el código fuente debe ser registrado y subido para que las acciones en GitHub lo procesen. Aquí te explicamos cómo realizar estos pasos eficientemente:

  1. Verificar cambios: Usa git status para ver qué archivos han sido modificados.

  2. Agregar cambios: Ejecuta git add <archivo> para registrar los cambios en tu sistema de control de versiones.

  3. Registrar commit: Usa git commit -m "mensaje" para documentar tus modificaciones. Por ejemplo, git commit -m "Actualizar archivo con estado remoto".

  4. Enviar al repositorio: Con git push, sube los cambios a tu repositorio en GitHub. Esto detonará tus flujos de trabajo configurados.

¿Qué sigue después de configurar todo?

Una vez integrados todos los elementos, la magia de la automatización se hace evidente. Al confirmar un nuevo bloque o recurso dentro de tu archivo main.tf, automáticamente se desplegará sin necesidad de ejecutar comandos manuales de Terraform gracias a GitHub Actions. El control se simplifica. Así, cada elemento añadido en Terraform aprovechará automáticamente la infraestructura preexistente y almacenará estados eficientemente.

Prácticas como estas llevan el DevOps a otro nivel, optimizando el flujo de trabajo y garantizando la consistencia de la infraestructura. ¡Continúa explorando y dominando el fantástico mundo de la automatización y despliegue con Terraform y GitHub!