Automatizando Testes de Infraestrutura AWS com Terratest

As organizações que adotam Infraestrutura como Código (IaC) na AWS frequentemente enfrentam dificuldades em garantir que sua infraestrutura não apenas seja provisionada corretamente, mas também funcione como esperado uma vez implantada. Até mesmo pequenas misconfigurações podem levar a paradas custosas, vulnerabilidades de segurança ou problemas de desempenho.

Métodos de teste tradicionais — como inspecionar manualmente os recursos ou confiar unicamente na análise de código estático — não fornecem confiança suficiente para ambientes de produção. Há uma necessidade urgente de uma maneira automatizada e confiável de validar mudanças na infraestrutura da AWS antes que elas entrem em operação.

Solução

Terratest fornece uma estrutura de teste automatizada escrita em Go, projetada especificamente para testar código de infraestrutura em ambientes de nuvem do mundo real, como a AWS. Ao implantar, verificar e destruir recursos programaticamente, o Terratest preenche a lacuna entre escrever IaC (por exemplo, Terraform) e enviar mudanças com confiança. Veja como funciona:

Abaixo está um guia detalhado sobre como realizar testes de infraestrutura da AWS usando o Terratest com Terraform, juntamente com trechos de código exemplo em Go. Este fluxo de trabalho ajudará você a provisionar recursos da AWS, executar testes contra eles para garantir que funcionem como pretendido e, em seguida, desmontar tudo automaticamente.

Pré-requisitos

Instalar o Terraform

Baixe e instale o Terraform no site oficial.

Instalar o Go

O Terratest é escrito em Go, portanto, você precisará ter o Go instalado. Baixe o Go no site oficial.

Configurar as Credenciais da AWS

Assegure-se de que suas credenciais da AWS estejam configuradas (por exemplo, via ~/.aws/credentials ou variáveis de ambiente como AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY).

Inicialize um Módulo Go

No diretório do seu projeto, execute:

Shell

 

Adicione o Terratest ao seu go.mod

No diretório do seu projeto/repositório, execute:

Shell

 

Configuração de Exemplo do Terraform

Crie uma configuração simples do Terraform que inicia uma instância AWS EC2. Coloque os seguintes arquivos em um diretório chamado aws_ec2_example (ou qualquer nome que preferir).

Salve-o como main.tf para referência.

Shell

 

Em seguida, variables.tf:

Shell

 

Snippet de Código do Terratest

Crie um arquivo de teste Go em um diretório chamado test (ou pode dar qualquer nome, mas test é convencional). Por exemplo, aws_ec2_test.go:

Shell

 

O Que Este Teste Faz

  • Inicializa e aplica a configuração do Terraform em ../aws_ec2_example.
  • Implanta uma instância EC2 com a AMI especificada na região us-east-1.
  • Captura a saída instance_id do Terraform.
  • Verifica se o ID da instância não está vazio usando a biblioteca de asserção do Testify.
  • Destrói os recursos ao final do teste para evitar custos contínuos.

Executando os Testes

  • Navegue até o diretório que contém seu arquivo de teste Go (por exemplo, diretório de teste).
  • Execute o seguinte comando:
Shell

 

  • Observe a saída:
    • Você verá o Terraform inicializando e aplicando sua infraestrutura AWS.
    • Após a validação das asserções do teste, o Terraform destruirá os recursos.

Conclusão

Seguindo estes passos, você pode integrar Terratest em seu fluxo de trabalho de IaC da AWS para:

  • Provisionar recursos AWS usando Terraform.
  • Testá-los programaticamente com testes baseados em Go.
  • Validar se sua infraestrutura está configurada corretamente e funcionando como esperado.
  • Desmontar automaticamente, garantindo que você não esteja incorrendo em custos desnecessários da AWS e mantendo um ambiente limpo para execuções de testes repetidos.

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