Loading…

Acerca de Formateador HCL / Terraform en Línea

Terraform, Packer y otras herramientas de HashiCorp utilizan HCL2—y todas lucen mejor cuando están formateadas consistentemente. Este Formateador HCL envía tu configuración a un backend seguro que aplica reglas de estilo terraform fmt para indentación, espaciado y diseño, luego devuelve HCL2 normalizado sin alterar la semántica.

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

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

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

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.

AspectoDetalle
ModoRespaldado por servidor (sin WASM en el navegador)
AlcanceEspacios en blanco, indentación, espaciado, diseño básico
ReordenamientoSin reordenamiento semántico de recursos o bloques
OpcionesNinguna — acción única de Formatear para salida predecible
LímitesAprox. 1–2 MB de entrada, ~25s de tiempo de espera del servidor (sujeto a ajustes)
RetenciónProcesamiento transitorio — la entrada se descarta después del formateo
Como con cualquier herramienta en línea, evita pegar secretos de producción. Usa terraform fmt o packer fmt localmente para código sensible.

Cobertura de Lenguaje

Comprende construcciones comunes de HCL2 utilizadas en Terraform y otras herramientas de HashiCorp.

ConstructoEjemplosNotas
Bloquesresource, variable, output, module, locals, job, taskEstructura de bloques anidados preservada
Atributosname = "web", count = 2Espaciado normalizado alrededor de = y entre atributos
Colecciones[1, 2, 3], { key = value }Diseño uniforme para listas y mapas/objetos
Heredocs<<-EOF ... EOFMarcadores conservados; indentación normalizada cuando es posible
ComentariosComentarios 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"
  }
}
Transformación solo de diseño: identificadores, expresiones y referencias permanecen sin cambios.

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íntomaCausa probableQué verificar
Sin salida / error de análisisLlave, corchete o paréntesis sin cerrarContar pares { }, [ ], ( ) coincidentes y cerrar todos los bloques
Problemas con heredocsTerminador faltante o no coincidenteAsegurar que marcadores como EOF aparezcan exactamente y en su propia línea
Estilos mezcladosTabulaciones/espacios o caracteres extraviadosNormalizar indentación, eliminar caracteres de control extraviados
Confusión con .tfvarsSintaxis JSON vs HCLUsar 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 fmt

Reescribe archivos .tf y .tfvars basados en HCL en el directorio actual.

Terraform: verificación recursiva en CI (sin escritura)

terraform fmt -check -recursive

Sale 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.hcl

Formatea 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 -recursive

Detiene 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.

Para código de infraestructura regulado o confidencial, prefiere herramientas CLI locales y aplica `terraform fmt -check -recursive` en CI en lugar de enviar archivos a formateadores en línea.

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?

No. Este formateador HCL está respaldado por servidor: tu entrada se envía a un endpoint seguro para formateo y el HCL resultante se devuelve a tu navegador. Para código de infraestructura altamente sensible o regulado, prefiere ejecutar `terraform fmt` (o `packer fmt`) localmente.

🛡️¿Puedo pegar secretos aquí?

Recomendamos encarecidamente que no pegues secretos de producción en ninguna herramienta en línea. Aunque el servicio está asegurado y diseñado para procesamiento transitorio, las credenciales de larga duración o altamente sensibles solo deben residir en archivos locales, almacenes de secretos o bóvedas de CI — no en herramientas del navegador.

🧩¿Cambia el formateo el comportamiento de la configuración?

No. El formateador se centra en el diseño: espacios en blanco, sangría y espaciado. Los bloques de recursos, argumentos, expresiones y referencias permanecen iguales, asumiendo que el HCL original era válido.

📄¿Puedo formatear archivos .tfvars?

Sí, siempre que el archivo .tfvars utilice sintaxis HCL. Terraform también admite variables basadas en 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`?

`terraform fmt` es el formateador canónico incluido con Terraform y es ideal para desarrollo local y CI. Esta herramienta web está destinada a limpiezas rápidas y ad hoc cuando no tienes la CLI a mano o quieres arreglar un pequeño fragmento en el navegador.

🧯¿Por qué falló el formateo?

La mayoría de los fallos son errores de análisis: llaves o corchetes sin cerrar, heredocs mal formados o mezcla de tfvars estilo JSON con sintaxis HCL. Corrige el problema estructural (o usa el dialecto/formateador correcto) e inténtalo de nuevo.

Pro Tips

CI Tip

Impón `terraform fmt -check -recursive` en CI para evitar la desviación de formato en grandes repositorios de infraestructura.

Best Practice

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.

Best Practice

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.

Best Practice

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