Share via


Testando o código Terraform

Terraform permite a definição, visualização e implantação de infraestrutura em nuvem. Usando Terraform, você cria arquivos de configuração usando a sintaxe HCL. A sintaxe HCL permite especificar o provedor de nuvem - como o Azure - e os elementos que compõem sua infraestrutura de nuvem. Depois de criar os arquivos de configuração, você cria um plano de execução que permite visualizar as alterações na infraestrutura antes que elas sejam implantadas. Depois de verificar as alterações, você aplica o plano de execução para implantar a infraestrutura.

Terraform é uma ferramenta de Infraestrutura como Código (IaC). Esta categoria de ferramenta refere-se ao fato de que você trata seus arquivos Terraform como faria com o código-fonte do projeto. Parte desse processo inclui controle de versão e controle do código-fonte. Além disso, os testes também devem fazer parte do seu processo. Este artigo fornece uma visão geral dos diferentes tipos de testes que podem ser executados em um projeto Terraform.

Implementar testes de integração

Os testes de integração validam que uma alteração de código recém-introduzida não quebra o código existente. Em DevOps, integração contínua (CI) refere-se a um processo que constrói todo o sistema sempre que a base de código é alterada - como alguém querendo mesclar um PR em um repositório Git. A lista a seguir contém exemplos comuns de testes de integração:

  • Ferramentas de análise de código estático, como lint e format.
  • Execute terraform validate para verificar a sintaxe do arquivo de configuração.
  • Execute o plano de terraforma para garantir que a configuração funcione conforme o esperado.

Implementar testes de unidade

Os testes de unidade garantem que uma parte ou função específica de um programa se comporte corretamente. Os testes de unidade são escritos pelo desenvolvedor da funcionalidade. Às vezes chamado de desenvolvimento orientado a testes, ou TDD, esse tipo de teste envolve ciclos de desenvolvimento curtos contínuos. No contexto dos projetos Terraform, o teste de unidade pode assumir a forma de uso terraform plan para garantir que os valores reais disponíveis no plano gerado sejam iguais aos valores esperados.

O teste de unidade pode ser especialmente benéfico quando seus módulos Terraform começam a se tornar mais complexos:

  • Gerar blocos dinâmicos
  • Utilizar ciclos
  • Calcular variáveis locais

Tal como acontece com os testes de integração, muitas vezes os testes de unidade são incluídos no processo de integração contínua.

Implementar testes de conformidade

Os testes de conformidade são usados para garantir que a configuração siga as políticas definidas para o projeto. Por exemplo, você pode definir convenções de nomenclatura geopolítica para seus recursos do Azure. Ou talvez você queira que as máquinas virtuais sejam criadas a partir de um subconjunto definido de imagens. Os testes de conformidade seriam utilizados para fazer cumprir estas regras.

Os testes de conformidade também são normalmente definidos como parte do processo de integração contínua.

Implementar testes de ponta a ponta (E2E)

Os testes E2E validam o funcionamento de um programa antes de implantá-lo na produção. Um cenário de exemplo pode ser um módulo Terraform implantando duas máquinas virtuais em uma rede virtual. Você pode querer evitar que as duas máquinas façam ping uma na outra. Neste exemplo, você pode definir um teste para verificar o resultado pretendido antes da implantação.

O teste E2E é tipicamente um processo de três etapas. Primeiro, a configuração é aplicada a um ambiente de teste. O código seria então executado para verificar os resultados. Finalmente, o ambiente de teste é reinicializado ou retirado (como a deslocalização de uma máquina virtual).