Desvendando o Terraform
Entenda o conceito de Infraestrutura como Código (IaC), o ciclo de vida dos comandos e por que usamos Módulos corporativos na nuvem.
#01A Dor: ClickOps vs. Infraestrutura como Código (IaC)
Antes do Terraform, como um engenheiro criava um ambiente no Google Cloud? Ele abria o navegador e clicava em mais de 50 botões: criava o projeto, clicava para criar a VPC, configurava a subnet, criava o firewall, criava o bucket...
- Processo manual lento e sujeito a falhas humanas.
- Impossível rastrear quem alterou o quê e quando.
- O ambiente de Homologação nunca fica 100% igual ao de Produção.
- Recriar a infraestrutura em caso de desastre leva dias.
- Você escreve a planta da casa em código (arquivos .tf).
- O código é versionado no Git com histórico de commits e Merge Requests.
- Ambientes HML e PRD idênticos com parâmetros seguros.
- O Terraform recria o ambiente inteiro na nuvem de forma automatizada!
#02O Ciclo Sagrado dos 4 Comandos
Toda interação com o Terraform segue rigorosamente esta sequência lógica:
1. Contratando as Ferramentas (Inicialização)
terraform initO Terraform lê os arquivos .tf e faz o download dos plugins dos provedores (ex: google provider v6.x). Sem o init, ele não sabe como conversar com a API da nuvem.
2. A Maquete Arquitetônica (Planejamento)
terraform planO Terraform compara o que está escrito no seu código com o que existe na nuvem. Ele calcula um diff exato: o que será criado (+), alterado (~) ou destruído (-). NÃO altera nada na nuvem e NÃO gasta 1 centavo.
3. A Obra Física (Aplicação)
terraform applyO Terraform faz chamadas reais às APIs da GCP e provisiona os recursos. Em seguida, ele atualiza a 'memória' (o arquivo .tfstate) com os IDs e metadados gerados.
4. A Demolição Controlada (Limpeza)
terraform destroyApaga com precisão cirúrgica todos os recursos que aquele arquivo de código gerou, na ordem inversa de dependência, garantindo que nada fique esquecido gerando custos.
#03O Segredo do Arquivo de Estado (.tfstate)
O .tfstate é o cérebro e a memória do Terraform. Quando você roda um comando, como o Terraform sabe que o projeto já existe no GCP e não precisa criar outro? Ele consulta esse arquivo!
Se dois engenheiros aplicarem mudanças ao mesmo tempo, um sobrescreve o trabalho do outro. No bucket GCS, o Terraform cria uma trava (State Locking) impedindo isso.
O arquivo de estado contém senhas e IDs gerados. Salvar em bucket privado com criptografia e versionamento protege contra perda e vazamentos.
#04Por que Usamos Módulos? (A Analogia do Lego)
Pense nos módulos como peças de Lego personalizadas. Em vez de você construir uma roda do zero toda vez com borracha, aro e parafusos, você cria um bloco pré-montado chamado "Roda" e apenas define o tamanho.
O time de plataforma escreve o módulo uma única vez embutindo as regras de segurança (auto_create_network = false e APIs essenciais). Qualquer pessoa na empresa pode criar um projeto corporativo seguro com apenas 8 linhas:
module "novo_projeto" {
source = "gitlab.com/12labs/terraform-modules/project/google"
version = "1.0.0"
name = "12labs Production Core"
project_id = "core-prd-12labs"
billing_account = "014D3B-4BAB4B-CEF331"
}Treine comandos do Terraform no Cloud Shell!
Pratique inicialização sem backend, destravamento de estado e inspeção de recursos no simulador interativo.