Características Principales
- Formateo consciente de HCL2 para bloques estilo Terraform, atributos, listas/mapas y heredocs
- Indentación y espaciado consistentes alrededor de =, comas, llaves y bloques anidados
- Conserva comentarios y líneas en blanco intencionales cuando es posible para legibilidad
- Funciona con archivos .tf, .hcl, .tfvars basados en HCL y .pkr.hcl de Packer
- Salida idempotente: ejecutar el formateador nuevamente produce el mismo resultado
- Área de superficie mínima: una única acción “Formatear”, sin opciones de estilo para discutir
- Copia o descarga con un clic del resultado formateado desde el editor
- Procesamiento con servidor a través de un endpoint seguro — ideal para correcciones rápidas; prefiere CLI local para código altamente sensible
🔧 Cómo Usar el Formateador HCL for hcl-formatter
1. Pega o Suelta Tu Código
Abre tu archivo HCL/Terraform (.tf, .tfvars basado en HCL, .hcl, .pkr.hcl, etc.) y pega el contenido en el editor, o suelta el archivo si tu navegador lo admite.
2. Haz Clic en "Formatear"
Haz clic en el botón Formatear. Tu configuración se envía a un backend seguro que aplica reglas de estilo terraform fmt para la indentación, espaciado y diseño, luego devuelve HCL2 formateado.
3. Revisa, Copia o Descarga
Verifica el resultado en el editor, luego cópialo de vuelta en tu IDE o descarga el archivo formateado y guárdalo en tu repositorio.
Especificaciones Técnicas
Modelo de Ejecución
El formateador está respaldado por servidor y diseñado para imitar la normalización de diseño estilo terraform fmt para HCL2.
| Aspecto | Detalle |
|---|---|
| Modo | Respaldado por servidor (sin WASM en el navegador) |
| Alcance | Espacios en blanco, indentación, espaciado, diseño básico |
| Reordenamiento | Sin reordenamiento semántico de recursos o bloques |
| Opciones | Ninguna — acción única de Formatear para salida predecible |
| Límites | Aprox. 1–2 MB de entrada, ~25s de tiempo de espera del servidor (sujeto a ajustes) |
| Retención | Procesamiento transitorio — la entrada se descarta después del formateo |
Cobertura de Lenguaje
Comprende construcciones comunes de HCL2 utilizadas en Terraform y otras herramientas de HashiCorp.
| Constructo | Ejemplos | Notas |
|---|---|---|
| Bloques | resource, variable, output, module, locals, job, task | Estructura de bloques anidados preservada |
| Atributos | name = "web", count = 2 | Espaciado normalizado alrededor de = y entre atributos |
| Colecciones | [1, 2, 3], { key = value } | Diseño uniforme para listas y mapas/objetos |
| Heredocs | <<-EOF ... EOF | Marcadores conservados; indentación normalizada cuando es posible |
| Comentarios | Comentarios de estilo # y // | Mantenidos cuando es posible para preservar la intención y documentación |
Mini Antes/Después
Un pequeño ejemplo de limpieza de indentación y espaciado en un recurso de Terraform.
# Antes
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Después
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Errores y Casos Límite
Si el formateo falla o devuelve un error, generalmente se debe a problemas de análisis en la entrada HCL2.
| Síntoma | Causa probable | Qué verificar |
|---|---|---|
| Sin salida / error de análisis | Llave, corchete o paréntesis sin cerrar | Contar pares { }, [ ], ( ) coincidentes y cerrar todos los bloques |
| Problemas con heredocs | Terminador faltante o no coincidente | Asegurar que marcadores como EOF aparezcan exactamente y en su propia línea |
| Estilos mezclados | Tabulaciones/espacios o caracteres extraviados | Normalizar indentación, eliminar caracteres de control extraviados |
| Confusión con .tfvars | Sintaxis JSON vs HCL | Usar formateador JSON o terraform fmt para archivos *.tfvars.json |
Alternativas de Línea de Comandos
Para flujos de trabajo diarios de Infraestructura como Código, usa formateadores oficiales localmente y en CI, y mantén esta herramienta en línea para limpiezas ad-hoc rápidas.
macOS / Linux
Terraform: formatear en el lugar
terraform fmtReescribe archivos .tf y .tfvars basados en HCL en el directorio actual.
Terraform: verificación recursiva en CI (sin escritura)
terraform fmt -check -recursiveSale con código no cero si algún archivo necesita formateo — perfecto para CI y hooks pre-commit.
Packer: formatear plantilla
packer fmt ruta/a/plantilla.pkr.hclFormatea el archivo HCL de Packer especificado en el lugar.
Windows (PowerShell)
Formatear todos los archivos de Terraform recursivamente
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Ejecuta terraform fmt en cada archivo .tf encontrado bajo el directorio actual.
Verificación de formato estilo CI
terraform fmt -check -recursiveÚsalo en pipelines de construcción para fallar cuando el formato esté desactualizado.
GitHub Actions
Fallar la construcción si se requiere formateo
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveDetiene el flujo de trabajo cuando algún archivo de Terraform no está correctamente formateado.
Autoformateo en solicitudes de extracción (opcional)
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)Aplica terraform fmt y envía un commit solo de formato de vuelta a la rama.
Aplicaciones Prácticas
Higiene y Revisiones de PR
Normaliza espacios en blanco y sangrías para que los revisores puedan centrarse en cambios reales de infraestructura.
- Ejecutar formateo antes de abrir una solicitud de extracción
- Reducir comentarios de estilo quisquillosos en revisiones de Terraform
- Mantener los diffs de git pequeños y significativos
Desarrollo de Módulos de Terraform
Mantén los módulos consistentes entre equipos, repositorios y registros.
- Alinear bloques de variables y salidas en módulos compartidos
- Asegurar que las configuraciones de ejemplo coincidan con un único estilo de casa
Control de CI
Usa verificaciones de terraform fmt en CI para prevenir la deriva de estilo con el tiempo.
- Añadir `terraform fmt -check -recursive` como un paso obligatorio del pipeline
- Bloquear fusiones hasta que todos los archivos .tf estén formateados
Incorporación y Documentación
Ejemplos legibles ayudan a los nuevos miembros del equipo a aprender tanto Terraform como el estilo de casa rápidamente.
- Publicar fragmentos consistentemente formateados en READMEs
- Usar ejemplos limpios en sesiones internas de entrenamiento de Terraform
❓ Frequently Asked Questions
🔒¿Se procesa mi código localmente?
🛡️¿Puedo pegar secretos aquí?
🧩¿Cambia el formateo el comportamiento de la configuración?
📄¿Puedo formatear archivos .tfvars?
JSON mediante `.tfvars.json`; estos siguen las reglas de JSON y es mejor manejarlos con un formateador de JSON o con `terraform fmt` mismo.⚙️¿En qué se diferencia esto de `terraform fmt`?
🧯¿Por qué falló el formateo?
JSON con sintaxis HCL. Corrige el problema estructural (o usa el dialecto/formateador correcto) e inténtalo de nuevo.Pro Tips
Impón `terraform fmt -check -recursive` en CI para evitar la desviación de formato en grandes repositorios de infraestructura.
Evita pegar secretos o datos relacionados con el estado en herramientas en línea; mantén los ejemplos de configuración saneados y ejecuta formateadores CLI locales para código de infraestructura real.
Normaliza nuevas líneas finales y sangrías en tu editor para que los archivos de Terraform produzcan diferencias limpias y estables en todas las plataformas.
Añade un gancho de pre-commit que ejecute `terraform fmt` para que las solicitudes de extracción lleguen ya formateadas y las conversaciones de revisión puedan centrarse en la arquitectura y el riesgo.
Additional Resources
Other Tools
- Embellecedor CSS
- Embellecedor HTML
- Embellecedor JavaScript
- Embellecedor PHP
- Selector de Color
- Extractor de Sprites
- Decodificador Base64
- Codificador Base64
- Formateador C#
- Formateador CSV
- Dockerfile Formatter
- Formateador Elm
- Formateador ENV
- Formateador Go
- Formateador GraphQL
- Formateador INI
- Formateador JSON
- Formateador LaTeX
- Formateador Markdown
- Formateador Objective-C
- Php Formatter
- Formateador Proto
- Formateador Python
- Formateador Ruby
- Formateador Rust
- Formateador Scala
- Formateador de Scripts de Shell
- Formateador SQL
- Formateador SVG
- Formateador Swift
- Formateador TOML
- Typescript Formatter
- Formateador XML
- Formateador YAML
- Formateador Yarn
- Minificador CSS
- Html Minifier
- Javascript Minifier
- Minificador JSON
- Minificador XML
- Visor de Encabezados HTTP
- PDF a Texto
- Probador de Expresiones Regulares
- Verificador de Posición en SERP
- Consulta Whois