Ga naar inhoud

HCL naar JSON

Terraform-configuratie in HCL-indeling naar gelijkwaardig JSON converteren.

Invoer
Uitvoer

HCL naar JSON

Plak HCL — de taal die Terraform, Packer en andere HashiCorp-tools gebruiken — en deze converteraar geeft de overeenkomstige JSON terug. Het verwerkt de alledaagse structuren van een echte .tf-bestand: attributen op het hoogste niveau en blokken met nul of meer tekenreeks-labels zoals resource "aws_instance" "web", genest in andere blokken zo diep als nodig. Gelabelde blokken worden geconverteerd met behulp van dezelfde conventie die Terraforms eigen .tf.json-syntaxis gebruikt, dus een resource met een type en naam belandt onder resource → type → name in het resultaat, en herhaalde blokken op hetzelfde pad — bijvoorbeeld twee ingress-blokken in één resource — worden een JSON-array in plaats van elkaar te overschrijven.

Tekenreeksen, getallen, booleaanse waarden, null, lijsten en inline objectliteralen (tags = { Name = "web" }) worden rechtstreeks geconverteerd. Heredoc-tekenreeksen (<<EOT ... EOT en de ingesprongen vorm <<-EOT) worden normale JSON-tekenreeksen met behouden regelafbrekingen, en ${var.name}-interpolaties — evenals bare referenties zoals var.region of oproepen zoals merge(a, b) — blijven als letterlijke tekst in plaats van te worden geëvalueerd, omdat geen browsertool Terraform-variabelen of providers kan oplossen.

Opties omvatten inspringingsbreedte (2 spaties, 4 spaties, tabs of geminificeerd), alfabetisch sorteren van sleutels, opmerkingen behouden of verwijderen, en kiezen tussen één samengevoegd JSON-object of een vlakke lijst met blokken — elk met zijn type, labels en body — voor gemakkelijker scripting. Dubbele attribuutsleutels in een blok worden gemarkeerd in de live-tally in plaats van stilzwijgend te worden verwijderd, en zowel Windows- als Unix-regelafbrekingen worden geaccepteerd.

Alles wordt lokaal in uw browser uitgevoerd — uw configuratie wordt nooit geüpload, wat van belang is wanneer deze echte bronnen, IP's of account-ID's bevat. Kopieer de JSON, download deze als .txt-bestand, of stuur deze rechtstreeks naar een ander hulpprogramma om door te werken.

FAQ

Worden Terraform-variabelen en functies geëvalueerd?
Nee. Interpolaties zoals ${var.region} en eenvoudige expressies zoals var.region of merge(a, b) worden in de uitvoer als letterlijke ${...}-tekst behouden, precies zoals Terraforms eigen JSON-syntaxis deze weergeeft — dit hulpprogramma heeft geen toegang tot uw variabelewaarden, status of providers.
Hoe worden blokken zoals resource "aws_instance" "web" weergegeven?
Per label, genest in het object: resource → aws_instance → web bevat de attributen van dat blok. Dit komt overeen met de conventie die Terraform zelf voor .tf.json-bestanden gebruikt.
Wat gebeurt er met Heredoc-tekenreeksen?
Zowel <<EOT als de ingesprongen vorm <<-EOT worden geconverteerd naar een normale JSON-tekenreeks met echte regelafbrekingen. Het ingesprongen formulier krijgt eerst zijn gemeenschappelijke leidende witruimte verwijderd, zoals Terraform het leest.
Kan ik een platte lijst met blokken krijgen in plaats van één groot object?
Ja — schakel "Uitvoerindeling" naar "Lijst met blokken" om een array van records te krijgen, elk met zijn type, labels en body, wat gemakkelijker te herhalen is in een script.
Wordt mijn HCL-configuratie ergens geüpload?
Nee. Conversie vindt volledig in uw browser plaats — niets wat u hier plakt, inclusief resourcenamen of waarden, verlaat ooit uw apparaat.