Preskoči na vsebino

HCL v JSON

Pretvori HCL konfiguraciju v Terraform slogu v enakovreden JSON.

Vhod
Izhod

HCL v JSON

Prilepite HCL — jezik, ki ga uporabljajo Terraform, Packer in druga orodja HashiCorp — in ta pretvornik vrne enakovredni JSON. Obdeluje običajne oblike iz prave datoteke .tf: atribute na najvišji ravni in bloke z ničelnim ali več stringovnimi oznakami, kot je resource "aws_instance" "web", ugniježđene v drugih blokih, kolikor je globoka vaša konfiguracija. Označeni bloki se prevedejo z isto konvencijo, kot jo uporablja Terraform-ova lastna sintaksa .tf.json, tako da se vir s tipom in imenom nahaja pod resource → type → name v rezultatu, ponavljajoči bloki na isti poti — dva ingress bloka v enem viru, recimo — pa postanejo JSON niz namesto da se medsebojno prepišejo.

Nizih, številke, Boolove vrednosti, null, seznami in vgrajeni objektni literali (tags = { Name = "web" }) se neposredno pretvorijo. Heredoc nizi (<<EOT ... EOT in vgnježđena oblika <<-EOT) postanejo navadni JSON nizi z ohranjenim prelomom vrstic, interpolacije ${var.name} — kot tudi gole reference, kot so var.region ali klic, kot je merge(a, b) — pa ostanejo kot dobesedni tekst namesto da bi bili ocenjeni, ker noben brskalnik ne more razrešiti Terraform spremenljivk ali ponudnikov.

Možnosti pokrivajo širino zamika (2 presledka, 4 presledki, tabulatorji ali minimizirano), razvrščanje ključev po abecedi, ohranitev ali zavrnitev komentarjev ter izbiro med enim združenega JSON objekta ali ravnega seznama blokov — vsakega z lastnim tipom, oznakami in telesom — za lažje skriptiranje. Podvojeni ključi atributov znotraj bloka so označeni v živi oceni namesto da bi bili tiho zavrženi, sprejemljivi pa so tudi preskoči vrstic Windows in Unix.

Vse se izvršava lokalno v vašem brskalniku — vaša konfiguracija se nikoli ne pošlje, kar je pomembno, ko imenuje prave vire, IP-naslove ali ID-je računa. Kopirajte JSON, ga prenesite kot datoteko .txt ali ga pošljite naravnost v drugo orodje za nadaljevanje dela.

FAQ

Ali to oceni Terraform spremenljivke in funkcije?
Ne. Interpolacije, kot so ${var.region} in golih izrazih, kot so var.region ali merge(a, b), se v izhodu ohranijo kot dobesedni ${...} tekst, točno takšen, kot ga predstavlja Terraform-ova lastna JSON sintaksa — to orodje nima dostopa do vaših Terraform spremenljivk, stanja ali ponudnikov.
Kako so bloki, kot je resource "aws_instance" "web", predstavljeni?
Po oznaki, ugniježđeni v objektu: resource → aws_instance → web drži atribute tega bloka. To se ujema s konvencijo, ki jo sam Terraform uporablja za datoteke .tf.json.
Kaj se zgodi z nasledstvenim nizi?
Obe obliki <<EOT in vgnježđena oblika <<-EOT se prevedejo v navaden JSON niz s pravo prelomom vrstic. Vgnježđena oblika ima najprej odstranjeno skupno vodilno razmako, kar se ujema s tem, kako to prebere Terraform.
Ali lahko pridem do ravnega seznama blokov namesto enega velikega objekta?
Da — spremenite "Obliko rezultata" na "Seznam blokov", da dobite niz zapisov, od katerih ima vsak svoj tip, oznake in telo, kar je lažje za ponavljanje v skriptu.
Ali je moja HCL konfiguracija poslana nekje?
Ne. Pretvorka se izvršuje v celoti v vašem brskalniku — nič, kar ovdje prilepite, vključno z imeni virov ali vrednostmi, ne zapusti vaše naprave.