Automatizando Testes de Infraestrutura AWS com Terratest

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

Métodos tradicionais de teste — como inspecionar recursos manualmente ou confiar exclusivamente 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 entrem em produçã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 Terratest com Terraform, juntamente com exemplos de código em Go. Este fluxo de trabalho ajudará você a provisionar recursos da AWS, executar testes neles para garantir que funcionem conforme o esperado e, em seguida, desmontar tudo automaticamente.

Pré-requisitos

Instalar Terraform

Baixe e instale o Terraform a partir do site oficial.

Instalar Go

Terratest é escrito em Go, então você precisará ter o Go instalado. Baixe o Go do site oficial.

Configurar Credenciais da AWS

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

Inicializar um Módulo Go

No diretório do seu projeto, execute:

Shell

 

Adicionar Terratest ao seugo.mod

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

Shell

 

Exemplo de Configuração do Terraform

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

Salve como main.tf para referência.

Shell

 

Em seguida, variables.tf:

Shell

 

Trecho de Código do Terratest

Crie um arquivo de teste Go em um diretório chamado test (ou você pode nomeá-lo como quiser, mas test é o 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 em us-east-1.
  • Captura a saída do Terraform instance_id.
  • Verifica que o ID da instância não está vazio usando a biblioteca de assert do Testify.
  • Destroi os recursos no 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 as asserções de teste passarem, o Terraform destruirá os recursos.

Conclusão

Ao seguir esses passos, você pode integrar o Terratest em seu fluxo de trabalho de IaC da AWS para:

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

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