Zum Inhalt springen

HCL zu JSON

Terraform-Konfiguration im HCL-Format in gleichwertiges JSON konvertieren.

Eingabe
Ausgabe

HCL zu JSON

Kopieren Sie HCL — die Sprache, die Terraform, Packer und andere HashiCorp-Tools verwenden — und dieser Konverter gibt das entsprechende JSON zurück. Er verarbeitet die alltäglichen Strukturen einer echten .tf-Datei: Attribute auf Ebene 1 und Blöcke mit null oder mehr Zeichenketten-Labels wie resource "aws_instance" "web", verschachtelt in anderen Blöcken so tief es geht. Beschriftete Blöcke werden unter Verwendung derselben Konvention konvertiert, die Terraforms eigene .tf.json-Syntax verwendet, sodass eine Ressource mit Typ und Name unter resource → type → name im Ergebnis landet, und wiederholte Blöcke auf demselben Pfad — etwa zwei Ingress-Blöcke in einer Ressource — werden statt sich zu überschreiben zu einem JSON-Array.

Zeichenketten, Zahlen, Boolesche Werte, Null, Listen und Inline-Objektliterale (tags = { Name = "web" }) werden direkt konvertiert. Heredoc-Strings (<<EOT ... EOT und die eingerückte Form <<-EOT) werden zu einfachen JSON-Strings mit beibehaltenen Zeilenumbrüchen, und ${var.name}-Interpolationen — ebenso wie einfache Verweise wie var.region oder Aufrufe wie merge(a, b) — bleiben als wörtlicher Text statt ausgewertet zu werden, da kein Browser-Tool Terraform-Variablen oder Provider auflösen kann.

Optionen umfassen Einrückungsbreite (2 Leerzeichen, 4 Leerzeichen, Tabulatoren oder komprimiert), alphabetisches Sortieren von Schlüsseln, Beibehaltung oder Verwerfen von Kommentaren und die Wahl zwischen einem zusammengeführten JSON-Objekt oder einer flachen Liste von Blöcken — jeweils mit Typ, Labels und Body — für einfachere Skripte. Doppelte Attributschlüssel in einem Block werden in der Live-Tally gekennzeichnet, statt stillschweigend gelöscht zu werden, und Windows- sowie Unix-Zeilenumbrüche werden beide akzeptiert.

Alles läuft lokal in Ihrem Browser — Ihre Konfiguration wird niemals hochgeladen, was wichtig ist, wenn sie echte Ressourcen, IPs oder Konto-IDs enthält. Kopieren Sie das JSON, laden Sie es als .txt-Datei herunter, oder leiten Sie es direkt in ein anderes Tool weiter, um weiterzuarbeiten.

Häufige Fragen

Werden Terraform-Variablen und Funktionen ausgewertet?
Nein. Interpolationen wie ${var.region} und Ausdrücke wie var.region oder merge(a, b) werden im Ausgabe als wörtlicher ${...}-Text beibehalten, genau wie Terraforms eigene JSON-Syntax sie darstellt — dieses Tool hat keinen Zugriff auf Ihre Variablenwerte, den Status oder Provider.
Wie werden Blöcke wie resource "aws_instance" "web" dargestellt?
Nach Label, verschachtelt in das Objekt: resource → aws_instance → web enthält die Attribute dieses Blocks. Dies entspricht der Konvention, die Terraform selbst für .tf.json-Dateien verwendet.
Was passiert mit Heredoc-Strings?
Sowohl <<EOT als auch die eingerückte Form <<-EOT werden in einen normalen JSON-String mit echten Zeilenumbrüchen konvertiert. Die eingerückte Form hat zunächst ihren gemeinsamen führenden Leerraum entfernt, wie Terraform sie liest.
Kann ich statt eines großen Objekts eine flache Liste von Blöcken erhalten?
Ja — wechseln Sie "Ausgabeformat" zu "Liste von Blöcken", um ein Array von Datensätzen zu erhalten, jeweils mit seinem Typ, Labels und Body, was für Skripte leichter zu durchlaufen ist.
Wird meine HCL-Konfiguration irgendwo hochgeladen?
Nein. Die Umwandlung läuft vollständig in Ihrem Browser — nichts, das Sie hier einfügen, einschließlich Ressourcennamen oder Werten, verlässt je Ihr Gerät.