Preskočiť na obsah

HCL do JSON

Konvertujte konfigurácie HCL v štýle Terraformu do ekvivalentného JSON.

Vstup
Výstup

HCL do JSON

Vložte HCL — jazyk používaný Terraformom, Packerom a ďalšími nástrojmi spoločnosti HashiCorp — a tento konvertor vrátí ekvivalentný JSON. Spracováva bežné tvary reálneho súboru .tf: atribúty na najvyššej úrovni a bloky s nula alebo viacerými reťazcovými nálepkami, ako napríklad resource "aws_instance" "web", vnorené do iných blokov tak hlboko, ako vaša konfigurácia siaha. Bloky s nálepkami sa konvertujú pomocou rovnakej konvencie ako samotný Terraformov syntax .tf.json, takže zdroj s typom a menom skončí pod resource → type → name v rezultáte, a opakujúce sa bloky na rovnakej ceste — dva ingress bloky v rámci jedného zdroja — sa stanú poľom JSON namiesto toho, aby sa navzájom prepisovali.

Reťazce, čísla, boolovské hodnoty, null, zoznamy a vložené literály objektov (tags = { Name = "web" }) sa konvertujú priamo. Heredoc reťazce (<<EOT ... EOT a odsadená forma <<-EOT) sa stanú jednoduchými JSON reťazcami s zachovanými zalomeniami riadkov a interpolácie ${var.name} — spolu s odkázmi ako var.region alebo volania ako merge(a, b) — zostávajú ako doslovaný text namiesto vyhodnocovania, pretože žiadny nástroj v prehliadači nemôže vyriešiť premenné Terraformu ani poskytovatelia.

Možnosti zahŕňajú šírku odsadenia (2 medzery, 4 medzery, tabulátory alebo minimalizované), triedenie kľúčov abecedne, zachovávanie alebo vypúšťanie komentárov a výber medzi jedným zlúčeným JSON objektom alebo plochým zoznamom blokov — každý s jeho typom, nálepkami a telom — pre jednoduchšie skriptovanie. Duplicitné kľúče atribútov v bloku sa označujú v živej počítadle namiesto tichého vypustenia a Windows aj Unix zalomenia riadkov sú akceptované.

Všetko sa spúšťa lokálne vo vašom prehliadači — vaša konfigurácia sa nikdy nenahráva, čo je dôležité, keď pomenováva skutočné zdroje, IP adresy alebo ID účtov. Skopírujte JSON, stiahnite si ho ako súbor .txt alebo pošlite ho priamo do iného nástroja, aby ste pokračovali v práci.

Časté otázky

Vyhodnocuje to premenné a funkcie Terraformu?
Nie. Interpolácie ako ${var.region} a голе výrazy ako var.region alebo merge(a, b) sa zachovávajú ako doslovaný text ${...} vo výstupe, presne tak, ako ich predstavuje samotná Terraformova JSON syntaxe — tento nástroj nemá prístup k vašim hodnotám premenných, stavu ani poskytovateľom.
Ako sú reprezentované bloky ako resource "aws_instance" "web"?
Podľa nálepky, vnorené do objektu: resource → aws_instance → web obsahuje atribúty toho bloku. Zhoduje sa s konvenciou, ktorú samotný Terraform používa pre súbory .tf.json.
Čo sa stane s heredoc reťazcami?
Obe formy <<EOT a odsadená forma <<-EOT sa konvertujú na normálny JSON reťazec so skutočnými zalomeniami riadkov. Odsadená forma má najskôr odstránenu svoju spoločnú vedúcu medzeru, čo zodpovedá tomu, ako ju čita Terraform.
Môžem dostať plochý zoznam blokov namiesto jedného veľkého objektu?
Áno — prepnite "Forma výstupu" na "Zoznam blokov", aby ste dostali pole záznamov, z ktorých každý má svoj typ, nálepky a telo, čo je ľahšie prechádzať v skripte.
Je moja HCL konfigurácia kdekolvek nahraná?
Nie. Konverzia prebieha úplne vo vašom prehliadači — nič, čo tu vložíte, vrátane názvov zdrojov alebo hodnôt, nikdy neopustí vaše zariadenie.