Caratteristiche Principali
- Formattazione consapevole di HCL2 per blocchi in stile Terraform, attributi, liste/mappe e heredoc
- Indentazione e spaziatura coerenti attorno a =, virgole, parentesi graffe e blocchi annidati
- Preserva commenti e righe vuote intenzionali dove possibile per la leggibilità
- Funziona con file .tf, .hcl, .tfvars basati su HCL e file Packer .pkr.hcl
- Output idempotente: eseguire nuovamente il formattatore produce lo stesso risultato
- Area di superficie minima: una singola azione 'Formatta', nessuna opzione di stile su cui discutere
- Copia con un clic o download del risultato formattato dall'editor
- Elaborazione con backend server tramite un endpoint sicuro — ottimo per correzioni rapide; preferisci CLI locale per codice altamente sensibile
🔧 Come Utilizzare il Formattatore HCL for hcl-formatter
1. Incolla o Trascina il Tuo Codice
Apri il tuo file HCL/Terraform (.tf, .tfvars basato su HCL, .hcl, .pkr.hcl, ecc.) e incolla il contenuto nell'editor, o trascina il file se il tuo browser lo supporta.
2. Clicca "Formatta"
Clicca il pulsante Formatta. La tua configurazione viene inviata a un backend sicuro che applica le regole di stile terraform fmt per indentazione, spaziatura e layout, quindi restituisce HCL2 formattato.
3. Rivedi, Copia o Scarica
Controlla il risultato nell'editor, poi copialo nuovamente nel tuo IDE o scarica il file formattato e commitarlo nel tuo repository.
Specifiche Tecniche
Modello di Esecuzione
Il formattatore è supportato da server e progettato per imitare la normalizzazione del layout in stile terraform fmt per HCL2.
| Aspetto | Dettaglio |
|---|---|
| Modalità | Supportato da server (nessun WASM nel browser) |
| Ambito | Spazi bianchi, indentazione, spaziatura, layout di base |
| Riordinamento | Nessun riordinamento semantico di risorse o blocchi |
| Opzioni | Nessuna — singola azione Formatta per output prevedibile |
| Limiti | Circa 1–2 MB di input, ~25s timeout server (soggetto a regolazioni) |
| Conservazione | Elaborazione transitoria — l'input viene scartato dopo la formattazione |
Copertura Linguistica
Comprende i costrutti comuni di HCL2 utilizzati in Terraform e altri strumenti HashiCorp.
| Costrutto | Esempi | Note |
|---|---|---|
| Blocchi | resource, variable, output, module, locals, job, task | Struttura dei blocchi annidati preservata |
| Attributi | name = "web", count = 2 | Spaziatura normalizzata attorno a = e tra gli attributi |
| Collezioni | [1, 2, 3], { key = value } | Layout uniforme per elenchi e mappe/oggetti |
| Heredoc | <<-EOF ... EOF | Marcatori preservati; indentazione normalizzata dove possibile |
| Commenti | Commenti in stile # e // | Mantenuti dove possibile per preservare l'intento e la documentazione |
Mini Prima/Dopo
Un piccolo esempio di pulizia dell'indentazione e della spaziatura in una risorsa Terraform.
# Prima
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Dopo
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Errori & Casi Limite
Se la formattazione fallisce o restituisce un errore, di solito è dovuto a problemi di parsing nell'input HCL2.
| Sintomo | Causa probabile | Cosa controllare |
|---|---|---|
| Nessun output / errore di parsing | Parentesi, parentesi quadre o tonde non chiuse | Conta le coppie corrispondenti { }, [ ], ( ) e chiudi tutti i blocchi |
| Problemi con heredoc | Terminatore mancante o non corrispondente | Assicurati che marcatori come EOF appaiano esattamente e sulla loro riga |
| Stili misti | Tabulazioni/spazi o caratteri estranei | Normalizza l'indentazione, rimuovi i caratteri di controllo estranei |
| Confusione con .tfvars | Sintassi JSON vs HCL | Usa il formattatore JSON o terraform fmt per i file *.tfvars.json |
Alternative da Riga di Comando
Per i flussi di lavoro quotidiani di Infrastructure as Code, usa i formattatori ufficiali localmente e in CI, e mantieni questo strumento online per pulizie rapide ad hoc.
macOS / Linux
Terraform: formatta in loco
terraform fmtRiscrive i file .tf e .tfvars basati su HCL nella directory corrente.
Terraform: controllo ricorsivo CI (senza scritture)
terraform fmt -check -recursiveEsce con codice non zero se qualsiasi file necessita di formattazione — perfetto per CI e hook pre-commit.
Packer: formatta il template
packer fmt percorso/al/template.pkr.hclFormatta il file HCL di Packer specificato in loco.
Windows (PowerShell)
Formatta tutti i file Terraform in modo ricorsivo
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Esegue terraform fmt su ogni file .tf trovato nella directory corrente.
Controllo di formattazione in stile CI
terraform fmt -check -recursiveUtilizza nelle pipeline di build per fallire quando la formattazione non è aggiornata.
GitHub Actions
Fallisce la build se è richiesta la formattazione
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveInterrompe il flusso di lavoro quando un file Terraform non è formattato correttamente.
Auto-formattazione sulle pull request (opzionale)
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)Applica terraform fmt e invia un commit di sola formattazione al branch.
Applicazioni Pratiche
Igiene e Revisioni PR
Normalizza spazi bianchi e indentazione per permettere ai revisori di concentrarsi sui veri cambiamenti infrastrutturali.
- Esegui la formattazione prima di aprire una pull request
- Riduci i commenti pedanti sullo stile nelle revisioni Terraform
- Mantieni i diff git piccoli e significativi
Sviluppo Moduli Terraform
Mantieni i moduli coerenti tra team, repository e registri.
- Allinea blocchi di variabili e output nei moduli condivisi
- Assicura che le configurazioni di esempio seguano un unico stile aziendale
Controllo CI
Usa i controlli terraform fmt in CI per prevenire la deriva stilistica nel tempo.
- Aggiungi `terraform fmt -check -recursive` come passaggio obbligatorio della pipeline
- Blocca le fusioni finché tutti i file .tf non sono formattati
Onboarding e Documentazione
Esempi leggibili aiutano i nuovi membri del team a imparare rapidamente sia Terraform che lo stile aziendale.
- Pubblica frammenti formattati coerentemente nei README
- Usa esempi puliti nelle sessioni di formazione interna su Terraform
❓ Frequently Asked Questions
🔒Il mio codice viene elaborato localmente?
🛡️Posso incollare segreti qui?
🧩La formattazione modifica il comportamento della configurazione?
📄Posso formattare file .tfvars?
JSON tramite `.tfvars.json`; questi seguono le regole JSON ed è meglio gestirli con un formattatore JSON o con `terraform fmt` stesso.⚙️In cosa differisce da `terraform fmt`?
🧯Perché la formattazione è fallita?
JSON con sintassi HCL. Correggi il problema strutturale (o usa il dialetto/formattatore corretto) e riprova.Pro Tips
Applica `terraform fmt -check -recursive` nella CI per prevenire la deriva della formattazione nei grandi repository di infrastruttura.
Evita di incollare segreti o dati relativi allo stato in strumenti online; mantieni gli esempi di configurazione sanificati e utilizza formattatori CLI locali per il codice di infrastruttura reale.
Normalizza i ritorni a capo finali e i rientri nel tuo editor in modo che i file Terraform producano diff puliti e stabili su tutte le piattaforme.
Aggiungi un hook pre-commit che esegua `terraform fmt` in modo che le pull request arrivino già formattate e le discussioni di revisione possano concentrarsi sull'architettura e sui rischi.
Additional Resources
Other Tools
- Abbellitore CSS
- Abbellitore HTML
- Abbellitore Javascript
- Abbellitore PHP
- Selettore Colori
- Estrattore Sprite
- Decodificatore Base64
- Codificatore Base64
- Formattatore Csharp
- Formattatore CSV
- Dockerfile Formatter
- Formattatore Elm
- Formattatore ENV
- Formattatore Go
- Formattatore GraphQL
- Formattatore INI
- Formattatore JSON
- Formattatore LaTeX
- Formattatore Markdown
- Formattatore Objective-C
- Php Formatter
- Formattatore Proto
- Formattatore Python
- Formattatore Ruby
- Formattatore Rust
- Formattatore Scala
- Formattatore Script Shell
- Formattatore SQL
- Formattatore SVG
- Formattatore Swift
- Formattatore TOML
- Typescript Formatter
- Formattatore XML
- Formattatore YAML
- Formattatore Yarn
- Minificatore CSS
- Html Minifier
- Javascript Minifier
- Minificatore JSON
- Minificatore XML
- Visualizzatore Intestazioni HTTP
- PDF a Testo
- Tester Regex
- Controllore Posizione SERP
- Ricerca Whois