Loading…

Sobre Formatador HCL / Terraform Online

Terraform, Packer e outras ferramentas HashiCorp utilizam HCL2—e todas ficam melhores quando formatadas consistentemente. Este Formatador HCL envia sua configuração para um backend seguro que aplica regras de estilo terraform fmt à indentação, espaçamento e layout, retornando HCL2 normalizado enquanto mantém a semântica inalterada.

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

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

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

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.

AspectoDetalhe
ModoBaseado em servidor (sem WASM no navegador)
EscopoEspaços em branco, indentação, espaçamento, layout básico
ReordenaçãoSem reordenação semântica de recursos ou blocos
OpçõesNenhuma — ação única de Formatar para saída previsível
LimitesAprox. 1–2 MB de entrada, ~25s de timeout do servidor (sujeito a ajustes)
RetençãoProcessamento transitório — a entrada é descartada após a formatação
Como em qualquer ferramenta online, evite colar segredos de produção. Use terraform fmt ou packer fmt localmente para código sensível.

Cobertura de Linguagem

Compreende construções comuns de HCL2 usadas no Terraform e outras ferramentas da HashiCorp.

ConstruçãoExemplosNotas
Blocosresource, variable, output, module, locals, job, taskEstrutura de blocos aninhados preservada
Atributosname = "web", count = 2Espaçamento normalizado em torno de = e entre atributos
Coleções[1, 2, 3], { key = value }Layout uniforme para listas e mapas/objetos
Heredocs<<-EOF ... EOFMarcadores preservados; indentação normalizada quando possível
ComentáriosComentá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"
  }
}
Transformação apenas de layout: identificadores, expressões e referências permanecem inalterados.

Erros e Casos Extremos

Se a formatação falhar ou retornar um erro, geralmente é devido a problemas de análise na entrada HCL2.

SintomaCausa provávelO que verificar
Nenhuma saída / erro de análiseChave, colchete ou parêntese não fechadoConte pares correspondentes { }, [ ], ( ) e feche todos os blocos
Problemas com heredocTerminador ausente ou incompatívelGaranta que marcadores como EOF apareçam exatamente e em sua própria linha
Estilos misturadosTabs/espaços ou caracteres perdidosNormalize a indentação, remova caracteres de controle perdidos
Confusão com .tfvarsSintaxe JSON vs HCLUse 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 fmt

Reescreve arquivos .tf e .tfvars baseados em HCL no diretório atual.

Terraform: verificação recursiva em CI (sem escrita)

terraform fmt -check -recursive

Sai 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.hcl

Formata 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 -recursive

Use 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 -recursive

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

Para código de infraestrutura regulamentado ou confidencial, prefira ferramentas CLI locais e aplique `terraform fmt -check -recursive` no CI em vez de enviar arquivos para formatadores online.

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?

Não. Este formatador HCL é baseado em servidor: sua entrada é enviada para um endpoint seguro para formatação e o HCL resultante é retornado ao seu navegador. Para código de infraestrutura altamente sensível ou regulamentado, prefira executar `terraform fmt` (ou `packer fmt`) localmente.

🛡️Posso colar segredos aqui?

Recomendamos fortemente que você não cole segredos de produção em nenhuma ferramenta online. Mesmo que o serviço seja seguro e projetado para processamento transitório, credenciais de longa duração ou altamente sensíveis devem residir apenas em arquivos locais, armazenamentos de segredos ou cofres de CI — não em ferramentas de navegador.

🧩A formatação altera o comportamento da configuração?

Não. O formatador foca no layout: espaços em branco, indentação e espaçamento. Blocos de recursos, argumentos, expressões e referências permanecem os mesmos, assumindo que o HCL original era válido.

📄Posso formatar arquivos .tfvars?

Sim, desde que o arquivo .tfvars use sintaxe HCL. O Terraform também suporta variáveis baseadas em 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`?

`terraform fmt` é o formatador canônico distribuído com o Terraform e é ideal para desenvolvimento local e CI. Esta ferramenta web destina-se a limpezas rápidas e ad-hoc quando você não tem o CLI à mão ou deseja arrumar um pequeno trecho no navegador.

🧯Por que a formatação falhou?

A maioria das falhas são erros de análise: chaves ou colchetes não fechados, heredocs malformados ou mistura de tfvars no estilo JSON com sintaxe HCL. Corrija o problema estrutural (ou use o dialeto/formatador correto) e tente novamente.

Pro Tips

CI Tip

Impõe `terraform fmt -check -recursive` no CI para evitar desvio de formatação em grandes repositórios de infraestrutura.

Best Practice

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.

Best Practice

Normalize novas linhas finais e indentação no seu editor para que os arquivos Terraform produzam diffs limpos e estáveis entre plataformas.

Best Practice

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