Preskoči na sadržaj

HCL u JSON

Pretvori HCL konfiguraciju u Terraform stilu u ekvivalentni JSON.

Unos
Rezultat

HCL u JSON

Zalijepite HCL — jezik koji koriste Terraform, Packer i drugi HashiCorp alati — i ovaj pretvarač vraća ekvivalentni JSON. Obrađuje uobičajene oblike iz prave .tf datoteke: atribute na najvišoj razini i blokove s nula ili više stringova oznaka, kao što je resource "aws_instance" "web", ugniježđene u drugim blokovima na dubini koliko je vaša konfiguracija duboka. Označeni blokovi se konvertiraju koristeći istu konvenciju koju koristi Terraform-ova vlastita .tf.json sintaksa, tako da resurs s tipom i imenom dolazi pod resource → type → name u rezultatu, a ponavljajući blokovi na istoj putanji — dva ingress bloka unutar jednog resursa, recimo — postaju JSON niz umjesto da se međusobno prepisuju.

Stringovi, brojevi, logičke vrijednosti, null, popisi i ugnježđeni objektni literali (tags = { Name = "web" }) se direktno konvertiraju. Heredoc stringovi (<<EOT ... EOT i ugnježđeni oblik <<-EOT) postaju obični JSON stringovi s očuvanjem prijeloma redaka, a interpolacije ${var.name} — kao i nereference kao što su var.region ili poziv kao merge(a, b) — ostaju kao doslovna tekst umjesto da budu evaluirani, jer nijedan alat u pregledniku ne može riješiti Terraform varijable ili davatelje.

Opcije pokrivaju širinu uvlake (2 razmaka, 4 razmaka, tabulatori ili minimizirano), sortiranje ključeva abecedno, zadržavanje ili odbacivanje komentara te odabir između jednog spojenog JSON objekta ili ravne liste blokova — svakog sa svojim tipom, oznakama i tijelom — za lakšu skriptu. Duplikatni ključevi atributa unutar bloka su označeni u živoj brojačnici umjesto da budu tiho odbijeni, a Windows i Unix prijelomi redaka se oba prihvaćaju.

Sve se izvršava lokalno u vašem pregledniku — vaša konfiguracija nikada nije poslana, što je važno kada naziva stvarne resurse, IP adrese ili ID-eve računa. Kopirajte JSON, preuzmite ga kao .txt datoteku ili ga pošaljite ravno u drugi alat za nastavak rada.

FAQ

Je li ovo ocjenjuje Terraform varijable i funkcije?
Ne. Interpolacije kao što su ${var.region} i nudi izraze kao što su var.region ili merge(a, b) su čuvane kao doslovna ${...} tekst u izlazu, točno kako Terraform-ova vlastita JSON sintaksa ih predstavlja — ovaj alat nema pristup vašim Terraform varijablama, stanju ili davateljima.
Kako su blokovi kao resource "aws_instance" "web" predstavljeni?
Po oznaci, ugniježđeni u objektu: resource → aws_instance → web drži atribute tog bloka. To se podudara s konvencijom koju koristi sam Terraform za datoteke .tf.json.
Što se events sa heredoc stringovima?
Oba <<EOT i ugnježđeni oblik <<-EOT se konvertiraju u obični JSON string s pravim prijelomima redaka. Ugnježđeni oblik prvo ima svoju uobičajenu vodilnu razmaku uklonjena, što se podudara s načinom na koji Terraform to čita.
Mogu li dobiti ravnu listu blokova umjesto jednog velikog objekta?
Da — prebacite "Oblik rezultata" na "Popis blokova" kako bi dobili niz zapisa, od kojih svaki ima svoj tip, oznake i tijelo, što je lakše za petljanje u skripti.
Je li moja HCL konfiguracija poslana negdje?
Ne. Konverzija se izvršava u potpunosti u vašem pregledniku — ništa što ovdje zalijepite, uključujući imena resursa ili vrijednosti, nikada ne napušta vaš uređaj.