Ir para o conteúdo

HCL para JSON

Converta configuração HCL em estilo Terraform para JSON equivalente.

Entrada
Saída

HCL para JSON

Cole HCL — a linguagem que Terraform, Packer e outras ferramentas HashiCorp usam — e este conversor devolve o JSON equivalente. Trata as formas comuns de um arquivo .tf real: atributos de nível superior e blocos com zero ou mais rótulos de cadeia, como resource "aws_instance" "web", aninhados dentro de outros blocos tão profundamente quanto sua configuração vai. Blocos rotulados são convertidos usando a mesma convenção que a sintaxe .tf.json do Terraform usa, então um recurso com um tipo e um nome fica sob resource → type → name no resultado, e blocos repetidos no mesmo caminho — dois blocos ingress dentro de um recurso, digamos — tornam-se uma matriz JSON em vez de sobrescrever um ao outro.

Cadeias, números, booleanos, null, listas e literais de objetos embutidos (tags = { Name = "web" }) todos são convertidos diretamente. Cadeias heredoc (<<EOT ... EOT e a forma indentada <<-EOT) tornam-se cadeias JSON simples com suas quebras de linha preservadas, e interpolações ${var.name} — juntamente com referências diretas como var.region ou uma chamada como merge(a, b) — permanecem como texto literal em vez de serem avaliadas, pois nenhuma ferramenta de navegador pode resolver variáveis Terraform ou provedores.

As opções cobrem largura de indentação (2 espaços, 4 espaços, tabulações ou minificado), ordenação alfabética de chaves, manutenção ou descarte de comentários, e escolha entre um objeto JSON mesclado ou uma lista simples de blocos — cada um com seu tipo, rótulos e corpo — para scripts mais fáceis. Chaves de atributo duplicadas dentro de um bloco são sinalizadas na contagem ao vivo em vez de serem silenciosamente descartadas, e as terminações de linha do Windows e Unix são ambas aceitas.

Tudo é executado localmente no seu navegador — sua configuração nunca é carregada, o que importa quando nomeia recursos reais, IPs ou IDs de conta. Copie o JSON, baixe como arquivo .txt ou envie direto para outra ferramenta para continuar trabalhando.

FAQ

Isto avalia variáveis e funções do Terraform?
Não. Interpolações como ${var.region} e expressões diretas como var.region ou merge(a, b) são mantidas como texto literal ${...} na saída, exatamente como a sintaxe JSON do Terraform as representa — esta ferramenta não tem acesso aos seus valores de variáveis, estado ou provedores.
Como são representados blocos como resource "aws_instance" "web"?
Por rótulo, aninhado no objeto: resource → aws_instance → web contém os atributos daquele bloco. Corresponde à convenção que o Terraform usa para arquivos .tf.json.
O que acontece com cadeias heredoc?
Tanto <<EOT quanto a forma indentada <<-EOT são convertidas para uma cadeia JSON normal com quebras de linha reais. A forma indentada tem seu espaço em branco comum removido primeiro, correspondendo a como o Terraform a lê.
Posso obter uma lista simples de blocos em vez de um grande objeto?
Sim — mude "Forma de saída" para "Lista de blocos" para obter uma matriz de registos, cada um com seu tipo, rótulos e corpo, o que é mais fácil de usar em um script.
A minha configuração HCL é carregada em algum lugar?
Não. A conversão é executada inteiramente no seu navegador — nada que cole aqui, incluindo nomes de recursos ou valores, sai do seu dispositivo.