Vai al contenuto

HCL a JSON

Converte la configurazione HCL nello stile Terraform in JSON equivalente.

Ingresso

HCL a JSON

Incolla HCL — il linguaggio utilizzato da Terraform, Packer e altri strumenti HashiCorp — e questo convertitore restituisce il JSON equivalente. Gestisce le forme comuni di un vero file .tf: attributi di livello superiore e blocchi con zero o più etichette di stringa come resource "aws_instance" "web", annidati all'interno di altri blocchi fino alla profondità che la tua configurazione richiede. I blocchi etichettati si convertono usando la stessa convenzione che la stessa sintassi .tf.json di Terraform utilizza, quindi una risorsa con un tipo e un nome finisce sotto resource → type → name nel risultato, e i blocchi ripetuti nello stesso percorso — due blocchi ingress dentro una risorsa, diciamo — diventano un array JSON invece di sovrascriversi a vicenda.

Stringhe, numeri, booleani, null, liste e oggetti letterali inline (tags = { Name = "web" }) si convertono direttamente. Le stringhe heredoc (<<EOT ... EOT e la forma indentata <<-EOT) diventano stringhe JSON normali con le loro interruzioni di riga conservate, e le interpolazioni ${var.name} — insieme ai riferimenti semplici come var.region o una chiamata come merge(a, b) — rimangono come testo letterale piuttosto che essere valutati, poiché nessuno strumento browser può risolvere variabili o provider di Terraform.

Le opzioni coprono la larghezza dell'indentazione (2 spazi, 4 spazi, tabulazioni o minificato), ordinamento alfabetico delle chiavi, conservazione o eliminazione dei commenti, e scelta tra un singolo oggetto JSON unito o un elenco flat di blocchi — ciascuno con il suo tipo, etichette e corpo — per scripting più facile. Le chiavi di attributo duplicate all'interno di un blocco sono segnalate nel conteggio dal vivo piuttosto che essere silenziosamente eliminate, e sono accettati sia gli interruttori di riga Windows che Unix.

Tutto viene eseguito localmente nel tuo browser — la tua configurazione non viene mai caricata, il che importa quando nomina risorse reali, IP o ID di account. Copia il JSON, scaricalo come file .txt, oppure invialo direttamente a un altro strumento per continuare a lavorare.

FAQ

Questo valuta variabili e funzioni di Terraform?
No. Le interpolazioni come ${var.region} e le espressioni semplici come var.region o merge(a, b) vengono mantenute come testo letterale ${...} nell'output, esattamente come la stessa sintassi JSON di Terraform le rappresenta — questo strumento non ha accesso ai tuoi valori di variabili, stato o provider.
Come vengono rappresentati blocchi come resource "aws_instance" "web"?
Per etichetta, annidato nell'oggetto: resource → aws_instance → web contiene gli attributi di quel blocco. Corrisponde alla convenzione che lo stesso Terraform utilizza per i file .tf.json.
Cosa succede con le stringhe heredoc?
Sia <<EOT che la forma indentata <<-EOT vengono convertite in una stringa JSON normale con veri interruttori di riga. La forma indentata ha il suo spazio vuoto comune iniziale rimosso per primo, corrispondendo a come Terraform la legge.
Posso ottenere un elenco flat di blocchi invece di un singolo grande oggetto?
Sì — passa "Formato di output" a "Elenco di blocchi" per ottenere un array di record, ciascuno con il suo tipo, etichette e corpo, che è più facile da scorrere in uno script.
La mia configurazione HCL viene caricata da qualche parte?
No. La conversione viene eseguita interamente nel tuo browser — niente di quello che incolla qui, inclusi nomi di risorse o valori, abbandona mai il tuo dispositivo.