Google Cloud|12labs Platform
Cloud Shell
Google Cloud Platform > Terraform & IaC > Guia Didático

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.

Praticar no Cloud Shell →

#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...

✕ O Jeito Antigo (ClickOps)
  • 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.
✓ Com Terraform (IaC Declarativo)
  • 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 init

O 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.

Dica de Produção: 'terraform init -backend=false' inicializa apenas para validação de sintaxe, sem precisar conectar na nuvem.

2. A Maquete Arquitetônica (Planejamento)

terraform plan

O 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.

Dica de Produção: Em esteiras GitOps, o 'plan' roda no Merge Request e gera um arquivo de plano binário com '-out=plan.tfplan'.

3. A Obra Física (Aplicação)

terraform apply

O 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.

Dica de Produção: Em produção, o apply NUNCA deve ser automático e cego; exige aprovação humana controlada.

4. A Demolição Controlada (Limpeza)

terraform destroy

Apaga 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.

Dica de Produção: Essencial para laboratórios e ambientes de teste temporários na nuvem.

#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!

Por que NUNCA guardar o .tfstate no seu computador?
1. Concorrência e Corrupção

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.

2. Segurança de Segredos

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.

Exemplo Real: Nosso Módulo de Projeto (modules/project)

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.

Abrir Cloud Shell