JSON / YAML → Terraform HCL
Terraform HCL Infrastruktur-Engineering

JSON / YAML zu Terraform HCL Variablen- & Locals-Generator

Konvertieren Sie JSON- und YAML-Payloads in Terraform HCL-Typbeschränkungen (type = object({...})), Standardwerte, locals-Blöcke und terraform.tfvars-Definitionen.

Null Serverübertragung
Terraform 1.3+ optional()
Voreinstellungen:
Eingabe-Nutzdaten (JSON / YAML)yaml
variable "app_config" {
  description = "Auto-generated Terraform variable constraint for app_config"
  type = object({
    cidr_block           = string
    enable_dns_hostnames = bool
    enable_dns_support   = bool
    max_azs              = number
    nat_gateways         = list(string)
    subnets              = list(object({
      az             = string
      cidr           = string
      is_public      = bool
      name           = string
      route_table_id = string
    }))
    tags                 = map(string)
    vpc_name             = string
  })
  default = {
    cidr_block           = "10.100.0.0/16"
    enable_dns_hostnames = true
    enable_dns_support   = true
    max_azs              = 3
    nat_gateways         = ["nat-08127394821a", "nat-09823412344b"]
    subnets              = [
      {
        az             = "us-east-1a"
        cidr           = "10.100.1.0/24"
        is_public      = true
        name           = "public-1a"
        route_table_id = "rtb-01a9b2c3d4"
      },
      {
        az             = "us-east-1b"
        cidr           = "10.100.2.0/24"
        is_public      = true
        name           = "public-1b"
        route_table_id = "rtb-01a9b2c3d4"
      },
      {
        az             = "us-east-1a"
        cidr           = "10.100.10.0/24"
        is_public      = false
        name           = "private-app-1a"
        route_table_id = "rtb-09f8e7d6c5"
      },
      {
        az             = "us-east-1b"
        cidr           = "10.100.11.0/24"
        is_public      = false
        name           = "private-app-1b"
        route_table_id = "rtb-09f8e7d6c5"
      }
    ]
    tags                 = {
      CostCenter  = "infra-0091"
      Environment = "production"
      ManagedBy   = "terraform"
      Owner       = "cloud-platform-team"
    }
    vpc_name             = "prod-useast1-vpc"
  }
}
Schema-Komplexität
13 Abgeleitete FelderTiefe 2
Optionale Attribute
0 Optionale erkanntv1.3+ Aktiviert
Export-Dialekte
4 Ausgabeformate.tf / .tfvars / .json

100% clientseitige AST-Synthese

Das gesamte JSON- und YAML-Parsing, die AST-Baumdurchquerung und die Terraform-HCL-Typsynthese werden lokal im Arbeitsspeicher Ihres Browsers ohne Netzwerkanfragen oder Telemetrie ausgeführt.

Terraform 1.3+ Konformität & Optionals

Erkennt fehlende oder nullable Felder automatisch und kapselt sie in die standardmäßige optional(type, default)-Syntax, um Laufzeit-Typfehler bei Terraform plan zu verhindern.

Multi-Dialekt Infrastruktur-Export

Exportiert nahtlos produktionsreife variables.tf-Typbeschränkungen, terraform.tfvars-Wertdefinitionen, locals.tf-Konfigurationsblöcke und tfvars.json-Dateien.

Technische Referenz & Architektur-Leitfaden

JSON / YAML zu Terraform HCL Variablen & Locals Generator — Referenz-Leitfaden

Konvertieren Sie JSON- und YAML-Payloads in Terraform HCL-Typbeschränkungen (type = object({...})), Standardwerte, locals-Blöcke und terraform.tfvars-Definitionen.

Wichtige Parameter & Steuerelemente

source_formatstring

Gibt das Format der Quellkonfiguration an ('json' oder 'yaml').

Standard: "json"
target_modestring

Legt die HCL-Zielstruktur fest: 'variable' (mit Typbeschränkung und Standardwert), 'locals' (berechneter lokaler Ausdruck) oder 'tfvars' (reine Variablenzuweisung).

Standard: "variable"
variable_namestring

Der Bezeichner für den generierten HCL-Variablenblock oder locals-Attributschlüssel.

Standard: "app_config"
use_optional_attributesboolean

Aktiviert die Terraform 1.3+ Syntax optional() mit Ausweichwerten für auslassbare oder nullable Objektattribute.

Standard: true
indent_spacesnumber

Anzahl der Leerzeichen für die Einrückung im formatierten HCL-Code.

Standard: 2

Profi-Tipps & Best Practices

Umschließen Sie nicht-obligatorische

Umschließen Sie nicht-obligatorische Schlüssel in verschachtelten Objekten mit optional(typ, standardwert). Dies verhindert Laufzeitfehler bei Null-Referenzen und macht redundante coalesce()-Funktionsaufrufe im Modul überflüssig.

Homogene JSON-Arrays werden problemlos

Homogene JSON-Arrays werden problemlos zu list(string) oder list(number). Wenn Listen unterschiedliche Typen enthalten, verwenden Sie tuple([typ1, typ2]), um die vollständige statische Typprüfung beizubehalten.

Wenn Ihre Bereitstellungspipeline

Wenn Ihre Bereitstellungspipeline dynamische Konfigurationen generiert, speichern Sie diese als terraform.auto.tfvars.json ab. Terraform liest JSON-Variablendateien nativ ohne manuellen HCL-Konvertierungsschritt ein.

HCL interpretiert ungequotete

HCL interpretiert ungequotete Bindestriche als Minus-Operatoren. Wenn JSON/YAML-Schlüssel Bindestriche enthalten (z. B. bei Tags oder K8s-Labels), setzen Sie diese in doppelte Anführungszeichen ("service-name" = string).

Häufige Fallstricke & Fehlerbehebung

Error: Invalid attribute name - Bindestriche in ungequoteten HCL-Bezeichnern

Ungequotete Bezeichner mit Bindestrichen lösen Syntaxfehler aus. Schließen Sie Objektschlüssel mit Sonderzeichen in doppelte Anführungszeichen ein, z. B. "mesh-endpoint" = object({...}).

Typenkonflikt beim Übergeben von null an nicht-nullable Attribute

Standardmäßig sind Terraform-Objektattribute nicht nullable. Aktivieren Sie den optional-Modifikator: type = object({ key = optional(string) }) oder setzen Sie nullable = true im Variablenblock.

Syntaxfehler durch fehlerhafte mehrzeilige YAML-Skalare

Stellen Sie sicher, dass nach YAML-Operatoren (| oder >) konsistente 2-Leerzeichen-Einrückungen verwendet werden und keine Tabulatoren (\t) enthalten sind.

Häufig gestellte Fragen (FAQ)

Wie werden Terraform HCL-Typen aus JSON/YAML abgeleitet?▼

Strings werden zu string, Zahlen zu number und Wahrheitswerte zu bool. Homogene Arrays werden als list(typ) erfasst, heterogene Arrays als tuple([...]), gleichförmige Key-Value-Maps als map(typ) und strukturierte Wörterbücher als typisierte object({...})-Blöcke.

Was unterscheidet einen variable-Block von einem locals-Block?▼

Ein variable-Block definiert eine externe Eingabeschnittstelle mit Typbeschränkungen und Standardwerten. Ein locals-Block enthält modulinterne, unveränderliche Ausdrücke, die nicht von außen überschrieben werden können.

Warum sollte man type = object({...}) statt type = any verwenden?▼

Die Verwendung von type = any deaktiviert die statische Typprüfung während terraform validate und verschiebt Fehler zur Ausführungszeit. Explizite Objektschemata bieten IDE-Autovervollständigung und sichere Modulverträge.

Kann der generierte Code direkt mit Terraform Cloud und Terragrunt genutzt werden?▼

Ja. Variablendeklarationen gehören in variables.tf, Standard- und Variablenwerte können in terraform.tfvars oder inputs-Blöcken in terragrunt.hcl hinterlegt werden.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →