Ugrás a tartalomhoz

HCL to JSON

Terraform-stílusú HCL-konfigurációkat konvertál JSON-formátumra.

Bemenet
Kimenet

HCL to JSON

Illessz be HCL-t — a Terraform, Packer és más HashiCorp-eszközök által használt nyelvet — és ez a konverter az ekvivalens JSON-t adja vissza. A valódi .tf fájlok mindennapi formáit kezeli: felső szintű attribútumokat, valamint nulla vagy több sztring címkével rendelkező blokkokat, például resource "aws_instance" "web", beágyazva más blokkok belsejébe tetszőleges mélységig. A megcímkézett blokkok ugyanazzal a konvencióval konvertálódnak, amelyet a Terraform saját .tf.json szintaxisa használ, így egy típussal és névvel rendelkező resource az erőforrás → típus → név alatt kerül az eredménybe, és az ugyanazon az útvonalon ismétlődő blokkok — például két ingress blokk egy erőforrásban — egy JSON tömb helyett az egymást felülírják.

A sztringek, számok, boolean-ok, null, listák és inline objektumliterálok (tags = { Name = "web" }) közvetlenül konvertálódnak. A heredoc sztringek (<<EOT ... EOT és az indentált <<-EOT forma) egyszerű JSON sztringekké válnak, megtartva a sortöréseket, az ${var.name} interpolációk pedig — valamint az olyan referenciák, mint a var.region vagy egy hívás, például merge(a, b) — szó szerinti szövegként maradnak meg, nem pedig kiértékelve, mivel a böngésző eszköz nem tudja feloldani a Terraform változókat vagy a szolgáltatókat.

A lehetőségek között szerepel az otkozat szélessége (2 szóköz, 4 szóköz, tabulátorok vagy tömörített), a kulcsok ábécé szerinti rendezése, a megjegyzések megtartása vagy elvetése, valamint az egy összevont JSON objektum vagy egy sík blokklista — mindegyik saját típussal, címkékkel és törzssel — közötti választás a könnyebb programozás érdekében. Az ismétlődő attribútumkulcsok a blokkon belül az élő tallióban jelzésre kerülnek, nem pedig csendesen elveszik, és mind a Windows-, mind a Unix-sortörések támogatottak.

Minden a böngészőben helyileg fut — a konfiguráció soha nem töltődik fel, ami akkor számít, amikor valódi erőforrásokat, IP-eket vagy fiókazonosítókat nevez meg. Másolja a JSON-t, töltse le .txt fájlként, vagy küldje közvetlenül egy másik eszközbe a munka folytatásához.

Gyakori kérdések

Kiértékeli ezt az eszköz a Terraform változókat és függvényeket?
Nem. Az ${var.region} interpolációk és az olyan kifejezések, mint a var.region vagy a merge(a, b) hívás az Terraform saját JSON szintaxisában képviselt literális ${...} szövegként marad meg — ennek az eszköznek nincs hozzáférése a Terraform változóihoz, állapotához vagy szolgáltatóihoz.
Hogyan jelennek meg az olyan blokkok, mint a resource "aws_instance" "web"?
Címke szerint beágyazva az objektumba: a resource → aws_instance → web az adott blokk attribútumait tartalmazza. Ez megegyezik az Terraform által a .tf.json fájlokhoz használt konvencióval.
Mi történik a heredoc sztringekkel?
Mind a <<EOT, mind az indentált <<-EOT forma egy normál JSON sztringre konvertálódik valódi sortörésekkel. Az indentált forma előbb közös kezdő fehérszóközét letörölve, úgyahogy a Terraform olvassa.
Kapok helyette egy sík blokk listáját egyetlen nagy objektum helyett?
Igen — kapcsolja át az "Kimenet alakja" opciót a "Blokkok listájára" hogy egy rekordok tömbjét kapja meg, mindegyik a maga típusával, címkéivel és szövegével, amely egy szkript körülbelül könnyebb.
Az HCL konfigurációm feltöltve valahova?
Nem. A konverzió teljes egészében a böngészőben fut — semmi, amit ide beillesztesz, beleértve az erőforrásneveket vagy az értékeket, soha nem hagyja el az eszközt.