Aula 6: Mantendo a Qualidade do Código com fmt, validate e show (Azure)
Introdução
Além do famoso ciclo init > plan > apply, o Terraform oferece comandos auxiliares que garantem a qualidade, consistência e segurança do seu código: terraform fmt, terraform validate e terraform show.
Esses comandos ajudam a:
- Garantir que o código esteja formatado corretamente
- Validar erros de sintaxe e argumentos
- Inspecionar recursos já criados e entender o estado atual da infraestrutura
O que são fmt, validate e show?
terraform fmt: formata automaticamente os arquivos.tfterraform validate: verifica se a sintaxe e argumentos do código estão corretosterraform show: exibe informações do estado atual da infraestrutura de forma legível
Explicação Técnica
terraform fmt
- Reescreve os arquivos Terraform com indentação e alinhamento padronizados
- Não altera a lógica do código
- Facilita a leitura e o trabalho em equipe
terraform validate
- Valida o código localmente (sem acessar a nuvem)
- Verifica erros de sintaxe, argumentos inválidos e tipos incorretos
terraform show
- Mostra os recursos gerenciados e seus atributos atuais com base no
terraform.tfstate - Pode inspecionar arquivos de plano salvos (
.plan)
Comandos de Referência
terraform fmt
terraform validate
terraform show
terraform show tfplan
Exemplo Prático
Código mal formatado (main.tf antes do fmt):
resource "azurerm_resource_group" "rg" {
name="meu-grupo"
location="East US"
}
Rodando o terraform fmt
terraform fmt
Código corrigido após o fmt:
resource "azurerm_resource_group" "rg" {
name = "meu-grupo"
location = "East US"
}
Código com erro proposital para o validate:
resource "azurerm_resource_group" "rg" {
nome = "grupo-invalido"
location = "East US"
}
Rodando o terraform validate
terraform validate
Output esperado:
│ Error: Unsupported argument
│ on main.tf line 2, in resource "azurerm_resource_group" "rg":
│ 2: nome = "grupo-invalido"
│
│ An argument named "nome" is not expected here.
Corrigindo o erro:
resource "azurerm_resource_group" "rg" {
name = "grupo-valido"
location = "East US"
}
Rodando terraform validate novamente:
terraform validate
Success! The configuration is valid.
Usando terraform show
Com infraestrutura já criada e terraform.tfstate existente:
terraform show
Output esperado (parcial):
# azurerm_resource_group.rg:
resource "azurerm_resource_group" "rg" {
location = "East US"
name = "grupo-valido"
id = "/subscriptions/.../resourceGroups/grupo-valido"
}
Para analisar um plano salvo:
terraform plan -out=tfplan
terraform show tfplan
Melhores Práticas
- Use
terraform fmtantes de qualquer commit para manter a consistência - Valide sempre com
terraform validateantes do plan - Inspecione com
terraform showquando precisar entender o que foi criado - Inclua esses comandos em pipelines de CI/CD para automação da qualidade
Fluxo de Trabalho Profissional
- Escreve ou edita o código
- Roda
terraform fmtpara padronizar - Roda
terraform validatepara checar erros - Roda
terraform planpara ver as mudanças - Roda
terraform applypara aplicar - Usa
terraform showpara inspecionar resultados