Características Principais
- Formatação consciente de HCL2 para blocos estilo Terraform, atributos, listas/mapas e heredocs
- Indentação e espaçamento consistentes ao redor de =, vírgulas, chaves e blocos aninhados
- Preserva comentários e linhas em branco intencionais quando possível para legibilidade
- Funciona com arquivos .tf, .hcl, .tfvars baseados em HCL e Packer .pkr.hcl
- Saída idempotente: executar o formatador novamente produz o mesmo resultado
- Área de superfície mínima: uma única ação “Formatar”, sem opções de estilo para discutir
- Cópia ou download com um clique do resultado formatado do editor
- Processamento com suporte de servidor via endpoint seguro — ótimo para correções rápidas; prefira CLI local para código altamente sensível
🔧 Como Usar o Formatador HCL for hcl-formatter
1. Cole ou Solte Seu Código
Abra seu arquivo HCL/Terraform (.tf, .tfvars baseado em HCL, .hcl, .pkr.hcl, etc.) e cole o conteúdo no editor, ou solte o arquivo se seu navegador suportar.
2. Clique em “Formatar”
Clique no botão Formatar. Sua configuração é enviada para um backend seguro que aplica regras de estilo terraform fmt para indentação, espaçamento e layout, então retorna HCL2 formatado.
3. Revise, Copie ou Baixe
Verifique o resultado no editor, depois copie de volta para sua IDE ou baixe o arquivo formatado e faça commit no seu repositório.
Especificações Técnicas
Modelo de Execução
O formatador é baseado em servidor e projetado para imitar a normalização de layout estilo terraform fmt para HCL2.
| Aspecto | Detalhe |
|---|---|
| Modo | Baseado em servidor (sem WASM no navegador) |
| Escopo | Espaços em branco, indentação, espaçamento, layout básico |
| Reordenação | Sem reordenação semântica de recursos ou blocos |
| Opções | Nenhuma — ação única de Formatar para saída previsível |
| Limites | Aprox. 1–2 MB de entrada, ~25s de timeout do servidor (sujeito a ajustes) |
| Retenção | Processamento transitório — a entrada é descartada após a formatação |
Cobertura de Linguagem
Compreende construções comuns de HCL2 usadas no Terraform e outras ferramentas da HashiCorp.
| Construção | Exemplos | Notas |
|---|---|---|
| Blocos | resource, variable, output, module, locals, job, task | Estrutura de blocos aninhados preservada |
| Atributos | name = "web", count = 2 | Espaçamento normalizado em torno de = e entre atributos |
| Coleções | [1, 2, 3], { key = value } | Layout uniforme para listas e mapas/objetos |
| Heredocs | <<-EOF ... EOF | Marcadores preservados; indentação normalizada quando possível |
| Comentários | Comentários de estilo # e // | Mantidos quando possível para preservar intenção e documentação |
Antes/Depois Mini
Um pequeno exemplo de limpeza de indentação e espaçamento em um recurso do Terraform.
# Antes
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Depois
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Erros e Casos Extremos
Se a formatação falhar ou retornar um erro, geralmente é devido a problemas de análise na entrada HCL2.
| Sintoma | Causa provável | O que verificar |
|---|---|---|
| Nenhuma saída / erro de análise | Chave, colchete ou parêntese não fechado | Conte pares correspondentes { }, [ ], ( ) e feche todos os blocos |
| Problemas com heredoc | Terminador ausente ou incompatível | Garanta que marcadores como EOF apareçam exatamente e em sua própria linha |
| Estilos misturados | Tabs/espaços ou caracteres perdidos | Normalize a indentação, remova caracteres de controle perdidos |
| Confusão com .tfvars | Sintaxe JSON vs HCL | Use formatador JSON ou terraform fmt para arquivos *.tfvars.json |
Alternativas de Linha de Comando
Para fluxos de trabalho diários de Infraestrutura como Código, use formatadores oficiais localmente e em CI, e mantenha esta ferramenta online para limpezas rápidas ad-hoc.
macOS / Linux
Terraform: formatar no local
terraform fmtReescreve arquivos .tf e .tfvars baseados em HCL no diretório atual.
Terraform: verificação recursiva em CI (sem escrita)
terraform fmt -check -recursiveSai com código não-zero se algum arquivo precisar de formatação — perfeito para CI e ganchos de pré-commit.
Packer: formatar modelo
packer fmt caminho/para/template.pkr.hclFormata o arquivo HCL do Packer especificado no local.
Windows (PowerShell)
Formatar todos os arquivos Terraform recursivamente
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Executa terraform fmt em cada arquivo .tf encontrado no diretório atual.
Verificação de formatação estilo CI
terraform fmt -check -recursiveUse em pipelines de build para falhar quando a formatação estiver desatualizada.
GitHub Actions
Falhar o build se a formatação for necessária
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveInterrompe o workflow quando qualquer arquivo Terraform não estiver devidamente formatado.
Auto-formatação em pull requests (opcional)
steps:
- run: terraform fmt -recursive
- run: git diff --quiet || (git config user.name "bot" && git config user.email "bot@example" && git commit -am "chore: terraform fmt" && git push)Aplica terraform fmt e envia um commit apenas de formatação de volta para o branch.
Aplicações Práticas
Higiene de PR & Revisões
Normalize espaços em branco e indentação para que os revisores possam focar nas mudanças reais de infraestrutura.
- Executar formatação antes de abrir um pull request
- Reduzir comentários picuinhas de estilo em revisões de Terraform
- Manter diffs git pequenos e significativos
Desenvolvimento de Módulos Terraform
Mantenha módulos consistentes entre equipes, repositórios e registros.
- Alinhar blocos de variáveis e saídas em módulos compartilhados
- Garantir que configurações de exemplo sigam um único estilo da casa
Controle de CI
Use verificações terraform fmt no CI para prevenir deriva de estilo ao longo do tempo.
- Adicionar `terraform fmt -check -recursive` como uma etapa obrigatória do pipeline
- Bloquear merges até que todos os arquivos .tf estejam formatados
Integração & Documentação
Exemplos legíveis ajudam novos membros da equipe a aprender tanto Terraform quanto o estilo da casa rapidamente.
- Publicar trechos consistentemente formatados em READMEs
- Usar exemplos limpos em sessões internas de treinamento de Terraform
❓ Frequently Asked Questions
🔒Meu código é processado localmente?
🛡️Posso colar segredos aqui?
🧩A formatação altera o comportamento da configuração?
📄Posso formatar arquivos .tfvars?
JSON via `.tfvars.json`; essas seguem regras JSON e são melhor tratadas por um formatador JSON ou pelo próprio `terraform fmt`.⚙️Como isso é diferente do `terraform fmt`?
🧯Por que a formatação falhou?
JSON com sintaxe HCL. Corrija o problema estrutural (ou use o dialeto/formatador correto) e tente novamente.Pro Tips
Impõe `terraform fmt -check -recursive` no CI para evitar desvio de formatação em grandes repositórios de infraestrutura.
Evite colar segredos ou dados relacionados ao estado em ferramentas online; mantenha exemplos de configuração sanitizados e execute formatadores CLI locais para código de infraestrutura real.
Normalize novas linhas finais e indentação no seu editor para que os arquivos Terraform produzam diffs limpos e estáveis entre plataformas.
Adicione um hook de pré-commit que execute `terraform fmt` para que pull requests cheguem já formatados e as conversas de revisão possam permanecer focadas na arquitetura e risco.
Additional Resources
Other Tools
- Embelezador CSS
- Embelezador HTML
- Embelezador Javascript
- Embelezador PHP
- Seletor de Cores
- Extrator de Sprites
- Decodificador Base64
- Codificador Base64
- Formatador Csharp
- Formatador CSV
- Dockerfile Formatter
- Formatador Elm
- Formatador ENV
- Formatador Go
- Formatador GraphQL
- Formatador INI
- Formatador JSON
- Formatador LaTeX
- Formatador Markdown
- Formatador Objective-C
- Php Formatter
- Formatador Proto
- Formatador Python
- Formatador Ruby
- Formatador Rust
- Formatador Scala
- Formatador de Script Shell
- Formatador SQL
- Formatador SVG
- Formatador Swift
- Formatador TOML
- Typescript Formatter
- Formatador XML
- Formatador YAML
- Formatador Yarn
- Minificador CSS
- Html Minifier
- Javascript Minifier
- Minificador JSON
- Minificador XML
- Visualizador de Cabeçalhos HTTP
- PDF para Texto
- Testador de Regex
- Verificador de Classificação SERP
- Consulta Whois