Fonctionnalités Clés
- Formatage compatible HCL2 pour les blocs de style Terraform, attributs, listes/cartes et heredocs
- Indentation cohérente et espacement autour de =, virgules, accolades et blocs imbriqués
- Préserve les commentaires et les lignes vides intentionnelles pour la lisibilité
- Fonctionne avec .tf, .hcl, .tfvars basés sur HCL et fichiers Packer .pkr.hcl
- Sortie idempotente : relancer le formateur donne le même résultat
- Surface minimale : une seule action « Formater », aucun réglage de style à débattre
- Copie ou téléchargement en un clic du résultat formaté depuis l'éditeur
- Traitement assisté par serveur via un point de terminaison sécurisé — idéal pour corrections rapides ; préférez le CLI local pour code très sensible
🔧 Comment Utiliser le Formateur HCL for hcl-formatter
1. Collez ou déposez votre code
Ouvrez votre fichier HCL/Terraform (.tf, .tfvars basé sur HCL, .hcl, .pkr.hcl, etc.) et collez le contenu dans l'éditeur, ou déposez le fichier si votre navigateur le prend en charge.
2. Cliquez sur « Formater »
Cliquez sur le bouton Formater. Votre configuration est envoyée à un backend sécurisé qui applique les règles de style terraform fmt pour l'indentation, l'espacement et la mise en page, puis renvoie le HCL2 formaté.
3. Vérifiez, copiez ou téléchargez
Vérifiez le résultat dans l'éditeur, puis copiez-le dans votre IDE ou téléchargez le fichier formaté et validez-le dans votre dépôt.
Spécifications techniques
Modèle d'exécution
Le formateur est serveur et conçu pour imiter la normalisation de mise en page de style terraform fmt pour HCL2.
| Aspect | Détail |
|---|---|
| Mode | Serveur (pas de WASM dans le navigateur) |
| Portée | Espace blanc, indentation, espacement, mise en page de base |
| Réorganisation | Aucune réorganisation sémantique des ressources ou blocs |
| Options | Aucune — action Formater unique pour une sortie prévisible |
| Limites | Environ 1–2 Mo d'entrée, ~25s de délai serveur (sujet à ajustement) |
| Rétention | Traitement transitoire — l'entrée est supprimée après le formatage |
Couverture linguistique
Comprend les constructions HCL2 courantes utilisées dans Terraform et d'autres outils HashiCorp.
| Construction | Exemples | Notes |
|---|---|---|
| Blocs | resource, variable, output, module, locals, job, task | Structure de blocs imbriqués préservée |
| Attributs | name = "web", count = 2 | Espacement normalisé autour de = et entre les attributs |
| Collections | [1, 2, 3], { key = value } | Mise en page uniforme pour les listes et les cartes/objets |
| Heredocs | <<-EOF ... EOF | Marqueurs conservés ; indentation normalisée si possible |
| Commentaires | Commentaires de style # et // | Conservés si possible pour préserver l'intention et la documentation |
Avant/Après Mini
Un petit exemple de nettoyage de l'indentation et de l'espacement dans une ressource Terraform.
# Avant
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Après
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Erreurs & Cas Limites
Si le formatage échoue ou renvoie une erreur, cela est généralement dû à des problèmes d'analyse dans l'entrée HCL2.
| Symptôme | Cause probable | Vérifications à effectuer |
|---|---|---|
| Aucune sortie / erreur d'analyse | Accolade, crochet ou parenthèse non fermé | Compter les paires correspondantes { }, [ ], ( ) et fermer tous les blocs |
| Problèmes de heredoc | Terminaison manquante ou non correspondante | S'assurer que les marqueurs comme EOF apparaissent exactement et sur leur propre ligne |
| Styles mélangés | Tabulations/espaces ou caractères parasites | Normaliser l'indentation, supprimer les caractères de contrôle parasites |
| Confusion .tfvars | Syntaxe JSON vs HCL | Utiliser un formateur JSON ou terraform fmt pour les fichiers *.tfvars.json |
Alternatives en Ligne de Commande
Pour les flux de travail quotidiens d'Infrastructure as Code, utilisez les formateurs officiels localement et en CI, et gardez cet outil en ligne pour des nettoyages rapides ad hoc.
macOS / Linux
Terraform : formater sur place
terraform fmtRéécrit les fichiers .tf et .tfvars basés sur HCL dans le répertoire courant.
Terraform : vérification récursive en CI (sans écriture)
terraform fmt -check -recursiveQuitte avec un code non nul si un fichier nécessite un formatage — parfait pour CI et les hooks pré-commit.
Packer : formater un modèle
packer fmt chemin/vers/template.pkr.hclFormate le fichier HCL Packer spécifié sur place.
Windows (PowerShell)
Formater tous les fichiers Terraform de manière récursive
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Exécute terraform fmt sur chaque fichier .tf trouvé sous le répertoire actuel.
Vérification de formatage style CI
terraform fmt -check -recursiveÀ utiliser dans les pipelines de build pour échouer lorsque le formatage n'est pas à jour.
GitHub Actions
Faire échouer le build si un formatage est requis
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveArrête le workflow lorsqu'un fichier Terraform n'est pas correctement formaté.
Formatage automatique sur les pull requests (optionnel)
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)Applique terraform fmt et pousse un commit de formatage uniquement vers la branche.
Applications Pratiques
Hygiène des PR & Revues
Normalisez les espaces et l'indentation pour que les relecteurs puissent se concentrer sur les changements d'infrastructure réels.
- Exécuter le formatage avant d'ouvrir une pull request
- Réduire les commentaires de style tatillons dans les revues Terraform
- Garder les diffs git petits et significatifs
Développement de Modules Terraform
Maintenez la cohérence des modules entre les équipes, dépôts et registres.
- Aligner les blocs de variables et de sorties dans les modules partagés
- Assurer que les configurations d'exemple correspondent à un style maison unique
Contrôle CI
Utilisez les vérifications terraform fmt dans le CI pour prévenir la dérive de style au fil du temps.
- Ajouter `terraform fmt -check -recursive` comme étape obligatoire du pipeline
- Bloquer les fusions jusqu'à ce que tous les fichiers .tf soient formatés
Intégration & Documentation
Des exemples lisibles aident les nouveaux membres d'équipe à apprendre rapidement Terraform et le style maison.
- Publier des extraits uniformément formatés dans les README
- Utiliser des exemples propres dans les sessions de formation Terraform internes
❓ Frequently Asked Questions
🔒Mon code est-il traité localement ?
🛡️Puis-je coller des secrets ici ?
🧩Le formatage modifie-t-il le comportement de la configuration ?
📄Puis-je formater des fichiers .tfvars ?
JSON via `.tfvars.json` ; celles-ci suivent les règles JSON et sont mieux traitées par un formateur JSON ou par `terraform fmt` lui-même.⚙️En quoi cela diffère-t-il de `terraform fmt` ?
🧯Pourquoi le formatage a-t-il échoué ?
JSON avec la syntaxe HCL. Corrigez le problème structurel (ou utilisez le dialecte/formateur correct) et réessayez.Pro Tips
Appliquez `terraform fmt -check -recursive` en CI pour éviter la dérive de formatage dans les grands dépôts d'infrastructure.
Évitez de coller des secrets ou des données liées à l'état dans des outils en ligne ; gardez les exemples de configuration assainis et exécutez les formateurs CLI locaux pour le code d'infrastructure réel.
Normalisez les sauts de ligne finaux et l'indentation dans votre éditeur pour que les fichiers Terraform produisent des diffs propres et stables sur toutes les plateformes.
Ajoutez un hook pre-commit qui exécute `terraform fmt` pour que les pull requests arrivent déjà formatées et que les conversations de revue puissent rester concentrées sur l'architecture et les risques.
Additional Resources
Other Tools
- Beautificateur CSS
- Beautificateur HTML
- Beautificateur JavaScript
- Beautificateur PHP
- Sélecteur de couleurs
- Extracteur de sprites
- Décodeur Base64
- Encodeur Base64
- Formateur C#
- Formateur CSV
- Dockerfile Formatter
- Formateur Elm
- Formateur ENV
- Formateur Go
- Formateur GraphQL
- Formateur INI
- Formateur JSON
- Formateur LaTeX
- Formateur Markdown
- Formateur Objective-C
- Php Formatter
- Formateur Proto
- Formateur Python
- Formateur Ruby
- Formateur Rust
- Formateur Scala
- Formateur de scripts shell
- Formateur SQL
- Formateur SVG
- Formateur Swift
- Formateur TOML
- Typescript Formatter
- Formateur XML
- Formateur YAML
- Formateur Yarn
- Minificateur CSS
- Html Minifier
- Javascript Minifier
- Minificateur JSON
- Minificateur XML
- Visualiseur d'en-têtes HTTP
- PDF vers Texte
- Testeur d'expressions régulières
- Vérificateur de classement SERP
- Recherche Whois