Skip to the content.

Esse material foi inicialmente postado em https://dev.to/tuxpilgrim/breve-guia-de-sobrevivencia-com-terraform-ggn.

Só pra recapitular, o que é o Terraform mesmo?

Baseado na definição da Hashicorp (em uma tradução literal):

O Terraform é uma ferramenta de infraestrutura como código criado pela Hashicorp que permite definir recursos locais e/ou em nuvem em arquivos de configuração legíveis por humanos que você pode versionar, reutilizar e compartilhar. Você pode então usar um fluxo de trabalho consistente para provisionar e gerenciar todo ciclo de vida da sua infraestrutura.

A linguagem usada para escrever esses arquivos é o HCL (Hashicorp Configuration Language), mas também pode ser usado JSON.

Mais detalhes e a definição completa, você pode ver aqui.

Por onde começar?

É possível começar com os tutoriais oficiais na plataforma da Hashicorp, ao menos para casos de uso mais comuns (com provedores de nuvem) tem bastante coisa:

Também existem alguns cursos/tutoriais gratuitos no Youtube em português(Brasil), como:

Outras recomendações no Youtube, em inglês:

E por último, e não menos importante, para quem gosta de livros, deixo a recomendação do Terraform Up & Running.

Agora que já sei usar (ao menos o básico), onde posso aprender as melhores práticas?

A forma de uso do Terraform muitas vezes varia de organização pra organização, mas existem alguns guias que valem a pena serem seguidos (ou ao menos adaptados para a criação de uma melhor prática interna):

Também existem algumas ferramentas/utilitários que ajudam a fazer o enforcement (garantia) dessas melhores práticas, como por exemplo:

¹Valeu pelo lembrete desse link Pablo.

Aqui também é importante citar que existem dois grandes grupos em uma discussão infinita quando se fala em organização dos projetos no Terraform:

Recomendo ler sobre as duas opções e escolher a que traz mais benefícios para o seu cenário.

Se Terraform é infra como código, quais opções eu tenho para testar meu código?

O tópico testes de infraestrutura como código ainda tem muito a ser discutido/melhorado, mas até agora, as opções que temos disponíveis são:

Mais especificamente para AWS existe o localstack, que é basicamente um framework para simular algumas funcionalidades da AWS localmente.

Deixo aqui também um artigo bem interessante da Hashicorp sobre o assunto: https://www.hashicorp.com/blog/testing-hashicorp-terraform.

Existem ferramentas de segurança para fazer análise estática (ou algum outro tipo) do meu código Terraform?

Existem algumas ferramentas opensource que fazem análise estática e de erros de configuração no código e lint. As mais usadas:

Algum material de referência relacionado a Terraform no pipeline de CI/CD?

Falando das plataformas de CI/CD mais usadas, todas tem workflows reutilizáveis para Terraform.

Uma outra abordagem é usar o Atlantis para automatizar a execução dos comandos via Pull Requests (Merge Requests).

E caso eu já tenha recursos criados (manualmente), consigo importar para código HCL?

Esse normalmente é um processo doloroso (dependendo da quantidade de recursos), mas existem alguns utilitários que podem ajudar nisso:

Comandos interessantes da CLI do Terraform

Outras ferramentas que podem ser úteis

²: Valeu pelo lembrete Arielson
³: Valeu pelo lembrete Isac


Contribuições são mais que bem vindas, só abrir um Pull Request se achar algo que deveria estar aqui e não está :)