Hauptmerkmale
- HCL2-bewusste Formatierung für Terraform-Stil-Blöcke, Attribute, Listen/Maps und Heredocs
- Konsistente Einrückung und Abstände um =, Kommas, Klammern und verschachtelte Blöcke
- Bewahrt Kommentare und absichtliche Leerzeilen möglichst für Lesbarkeit
- Funktioniert mit .tf-, .hcl-, HCL-basierten .tfvars- und Packer .pkr.hcl-Dateien
- Idempotente Ausgabe: Erneutes Ausführen des Formatierers liefert dasselbe Ergebnis
- Minimale Angriffsfläche: Eine einzige „Formatieren“-Aktion, keine Stiloptionen zum Diskutieren
- Ein-Klick-Kopieren oder Herunterladen des formatierten Ergebnisses aus dem Editor
- Servergestützte Verarbeitung über einen gesicherten Endpunkt – ideal für schnelle Korrekturen; bevorzugen Sie lokale CLI für hochsensible Codes
🔧 So verwenden Sie den HCL-Formatierer for hcl-formatter
1. Code einfügen oder ablegen
Öffnen Sie Ihre HCL/Terraform-Datei (.tf, HCL-basierte .tfvars, .hcl, .pkr.hcl usw.) und fügen Sie den Inhalt in den Editor ein, oder legen Sie die Datei ab, falls Ihr Browser dies unterstützt.
2. „Formatieren“ klicken
Klicken Sie auf die Schaltfläche Formatieren. Ihre Konfiguration wird an ein sicheres Backend gesendet, das terraform fmt-ähnliche Regeln für Einrückung, Abstände und Layout anwendet und dann formatiertes HCL2 zurückgibt.
3. Überprüfen, Kopieren oder Herunterladen
Überprüfen Sie das Ergebnis im Editor und kopieren Sie es zurück in Ihre IDE oder laden Sie die formatierte Datei herunter und committen Sie sie in Ihr Repository.
Technische Spezifikationen
Ausführungsmodell
Der Formatierer ist servergestützt und darauf ausgelegt, die Layout-Normalisierung im Stil von terraform fmt für HCL2 nachzuahmen.
| Aspekt | Details |
|---|---|
| Modus | Servergestützt (kein WASM im Browser) |
| Umfang | Leerzeichen, Einrückung, Abstände, grundlegendes Layout |
| Neuanordnung | Keine semantische Neuanordnung von Ressourcen oder Blöcken |
| Optionen | Keine – einzelne Formatierungsaktion für vorhersehbare Ausgabe |
| Grenzen | Ca. 1–2 MB Eingabe, ~25s Server-Timeout (kann angepasst werden) |
| Aufbewahrung | Vorübergehende Verarbeitung – Eingabe wird nach der Formatierung verworfen |
Sprachabdeckung
Versteht gängige HCL2-Konstrukte, die in Terraform und anderen HashiCorp-Tools verwendet werden.
| Konstrukt | Beispiele | Hinweise |
|---|---|---|
| Blöcke | resource, variable, output, module, locals, job, task | Verschachtelte Blockstruktur erhalten |
| Attribute | name = "web", count = 2 | Abstände um = und zwischen Attributen normalisiert |
| Sammlungen | [1, 2, 3], { key = value } | Einheitliches Layout für Listen und Maps/Objekte |
| Heredocs | <<-EOF ... EOF | Markierungen erhalten; Einrückung wo möglich normalisiert |
| Kommentare | # und //-Stil Kommentare | Wo möglich beibehalten, um Absicht und Dokumentation zu bewahren |
Mini Vorher/Nachher
Ein kleines Beispiel zur Bereinigung von Einrückung und Abständen in einer Terraform-Ressource.
# Vorher
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Nachher
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Fehler & Grenzfälle
Wenn die Formatierung fehlschlägt oder einen Fehler zurückgibt, liegt dies meist an Parsing-Problemen in der HCL2-Eingabe.
| Symptom | Wahrscheinliche Ursache | Was zu prüfen ist |
|---|---|---|
| Keine Ausgabe / Parse-Fehler | Unge schlossene Klammer, eckige Klammer oder runde Klammer | Zähle passende { }, [ ], ( ) Paare und schließe alle Blöcke |
| Heredoc-Probleme | Fehlender oder nicht übereinstimmender Terminator | Sicherstellen, dass Marker wie EOF exakt und in eigener Zeile erscheinen |
| Gemischte Stile | Tabs/Leerzeichen oder verirrte Zeichen | Einrückung normalisieren, verirrte Steuerzeichen entfernen |
| .tfvars-Verwirrung | JSON vs. HCL-Syntax | JSON-Formatter oder terraform fmt für *.tfvars.json-Dateien verwenden |
Kommandozeilen-Alternativen
Für tägliche Infrastructure-as-Code-Workflows verwenden Sie offizielle Formatter lokal und in CI, und behalten Sie dieses Online-Tool für schnelle Ad-hoc-Bereinigungen.
macOS / Linux
Terraform: Formatierung vor Ort
terraform fmtÜberschreibt .tf und HCL-basierte .tfvars-Dateien im aktuellen Verzeichnis.
Terraform: Rekursive CI-Prüfung (keine Schreibvorgänge)
terraform fmt -check -recursiveBeendet mit Nicht-Null, falls eine Datei Formatierung benötigt — perfekt für CI und Pre-Commit-Hooks.
Packer: Template formatieren
packer fmt pfad/zu/template.pkr.hclFormatiert die angegebene Packer-HCL-Datei vor Ort.
Windows (PowerShell)
Alle Terraform-Dateien rekursiv formatieren
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Führt terraform fmt für jede .tf-Datei aus, die unter dem aktuellen Verzeichnis gefunden wird.
Formatierungsprüfung im CI-Stil
terraform fmt -check -recursiveIn Build-Pipelines verwenden, um bei veralteter Formatierung fehlzuschlagen.
GitHub Actions
Build fehlschlagen lassen, wenn Formatierung erforderlich ist
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveStoppt den Workflow, wenn eine Terraform-Datei nicht korrekt formatiert ist.
Automatische Formatierung bei Pull Requests (optional)
steps:
- run: terraform fmt -recursive
- run: git diff --quiet || (git config user.name "bot" && git config user.email "bot@example" && git commit -am "chore: terraform fmt" && git push)Wendet terraform fmt an und pusht einen Commit mit nur Formatierungsänderungen zurück zum Branch.
Praktische Anwendungen
PR-Hygiene & Reviews
Normalisieren Sie Leerzeichen und Einrückungen, damit Reviewer sich auf tatsächliche Infrastrukturänderungen konzentrieren können.
- Formatierung vor dem Öffnen eines Pull Requests ausführen
- Reduzieren Sie pingelige Stilkommentare in Terraform-Reviews
- Halten Sie Git-Diffs klein und aussagekräftig
Terraform-Modulentwicklung
Halten Sie Module über Teams, Repositories und Registries hinweg konsistent.
- Variablen- und Output-Blöcke in gemeinsamen Modulen ausrichten
- Sicherstellen, dass Beispielkonfigurationen einem einheitlichen Hausstil entsprechen
CI-Überwachung
Verwenden Sie terraform fmt-Prüfungen in der CI, um Stilabweichungen im Laufe der Zeit zu verhindern.
- Fügen Sie `terraform fmt -check -recursive` als obligatorischen Pipelineschritt hinzu
- Blockieren Sie Merges, bis alle .tf-Dateien formatiert sind
Onboarding & Dokumentation
Lesbare Beispiele helfen neuen Teammitgliedern, sowohl Terraform als auch den Hausstil schnell zu erlernen.
- Veröffentlichen Sie konsistent formatierte Snippets in READMEs
- Verwenden Sie saubere Beispiele in internen Terraform-Schulungen
❓ Frequently Asked Questions
🔒Wird mein Code lokal verarbeitet?
🛡️Kann ich hier Geheimnisse einfügen?
🧩Ändert die Formatierung das Konfigurationsverhalten?
📄Kann ich .tfvars-Dateien formatieren?
JSON-basierte Variablen über `.tfvars.json`; diese folgen JSON-Regeln und werden besser von einem JSON-Formatierer oder `terraform fmt` selbst behandelt.⚙️Wie unterscheidet sich dies von `terraform fmt`?
🧯Warum ist die Formatierung fehlgeschlagen?
JSON-stil tfvars mit HCL-Syntax. Beheben Sie das strukturelle Problem (oder verwenden Sie den richtigen Dialekt/Formatierer) und versuchen Sie es erneut.Pro Tips
Erzwingen Sie `terraform fmt -check -recursive` in CI, um Formatierungsabweichungen in großen Infrastruktur-Repositories zu verhindern.
Vermeiden Sie das Einfügen von Geheimnissen oder zustandsbezogenen Daten in Online-Tools; halten Sie Konfigurationsbeispiele bereinigt und führen Sie lokale CLI-Formatierer für echten Infrastrukturcode aus.
Normalisieren Sie abschließende Zeilenumbrüche und Einzüge in Ihrem Editor, damit Terraform-Dateien saubere, stabile Diffs über Plattformen hinweg erzeugen.
Fügen Sie einen Pre-Commit-Hook hinzu, der `terraform fmt` ausführt, damit Pull-Requests bereits formatiert eintreffen und Review-Gespräche sich auf Architektur und Risiken konzentrieren können.
Additional Resources
Other Tools
- CSS-Verschönerer
- HTML-Verschönerer
- JavaScript-Verschönerer
- PHP-Verschönerer
- Farbauswahl
- Sprite-Extraktor
- Base64-Decoder
- Base64-Encoder
- Csharp-Formatierer
- CSV-Formatierer
- Dockerfile Formatter
- Elm-Formatierer
- ENV-Formatierer
- Go-Formatierer
- GraphQL-Formatierer
- INI-Formatierer
- JSON-Formatierer
- LaTeX-Formatierer
- Markdown-Formatierer
- Objective-C-Formatierer
- Php Formatter
- Proto-Formatierer
- Python-Formatierer
- Ruby-Formatierer
- Rust-Formatierer
- Scala-Formatierer
- Shell-Skript-Formatierer
- SQL-Formatierer
- SVG-Formatierer
- Swift-Formatierer
- TOML-Formatierer
- Typescript Formatter
- XML-Formatierer
- YAML-Formatierer
- Yarn-Formatierer
- CSS-Minifizierer
- Html Minifier
- Javascript Minifier
- JSON-Minifizierer
- XML-Minifizierer
- HTTP-Header-Betrachter
- PDF zu Text
- Regex-Tester
- SERP-Rang-Prüfer
- Whois-Abfrage