Automatizando Pruebas de Infraestructura en AWS con Terratest

Las organizaciones que adoptan Infraestructura como Código (IaC) en AWS a menudo tienen dificultades para garantizar que su infraestructura no solo esté correctamente aprovisionada, sino que también funcione como se espera una vez desplegada. Incluso configuraciones incorrectas menores pueden llevar a tiempos de inactividad costosos, vulnerabilidades de seguridad o problemas de rendimiento.

Los métodos de prueba tradicionales, como la inspección manual de recursos o depender únicamente del análisis de código estático, no proporcionan la suficiente confianza para los entornos de producción. Existe una necesidad urgente de una forma automatizada y confiable para validar los cambios en la infraestructura de AWS antes de que se implementen.

Solución

Terratest proporciona un marco de pruebas automatizado escrito en Go, diseñado específicamente para probar el código de infraestructura en entornos de nube del mundo real como AWS. Al desplegar, verificar y destruir recursos de manera programática, Terratest cierra la brecha entre escribir IaC (por ejemplo, Terraform) y enviar cambios con confianza. Así es como funciona:

A continuación, se presenta una guía detallada sobre cómo lograr pruebas de infraestructura de AWS utilizando Terratest con Terraform, junto con fragmentos de código de ejemplo en Go. Este flujo de trabajo te ayudará a aprovisionar recursos de AWS, ejecutar pruebas contra ellos para asegurarte de que funcionen como se espera y luego desmontar todo automáticamente.

Requisitos previos

Instalar Terraform

Descarga e instala Terraform desde el sito oficial.

Instalar Go

Terratest está escrito en Go, así que necesitarás tener Go instalado. Descarga Go desde el sito oficial.

Configurar Credenciales de AWS

Asegúrate de que tus credenciales de AWS estén configuradas (por ejemplo, a través de ~/.aws/credentials o variables de entorno como AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY).

Inicializar un Módulo Go

En tu directorio de proyecto, ejecuta:

Shell

 

Agregar Terratest a tu go.mod

En tu directorio de proyecto/repositorio, ejecuta:

Shell

 

Configuración de Terraform de Ejemplo

Crea una configuración simple de Terraform que lance una instancia de AWS EC2. Coloca los siguientes archivos en un directorio llamado aws_ec2_example (o cualquier nombre que prefieras).

Guárdalo como main.tf para referencia.

Shell

 

Luego, variables.tf:

Shell

 

Fragmento de Código de Terratest

Crea un archivo de prueba de Go en un directorio llamado test (o puedes nombrarlo como desees, pero test es convencional). Por ejemplo, aws_ec2_test.go:

Shell

 

Qué Hace Esta Prueba

  • Inicializa y aplica la configuración de Terraform en ../aws_ec2_example.
  • Despliega una instancia EC2 con la AMI especificada en us-east-1.
  • Captura la salida de Terraform instance_id.
  • Verifica que el ID de la instancia no esté vacío utilizando la biblioteca assert de Testify.
  • Destruye los recursos al final de la prueba para evitar incurrir en costos continuos.

Ejecutando las Pruebas

  • Navega al directorio que contiene tu archivo de prueba de Go (por ejemplo, el directorio de pruebas).
  • Ejecuta el siguiente comando:
Shell

 

  • Observa la salida:
    • Verás a Terraform inicializando y aplicando tu infraestructura de AWS.
    • Después de que las afirmaciones de la prueba pasen, Terraform destruirá los recursos.

Conclusión

Siguiendo estos pasos, puedes integrar Terratest en tu flujo de trabajo de IaC de AWS para:

  • Provisionar recursos de AWS utilizando Terraform.
  • Probarlos programáticamente con pruebas basadas en Go.
  • Validar que tu infraestructura esté configurada correctamente y funcione como se espera.
  • Eliminar automáticamente, asegurando que no estás incurriendo en costos innecesarios de AWS y manteniendo un entorno limpio para ejecuciones de pruebas repetidas.

Source:
https://dzone.com/articles/terratest-for-aws