Saltar al contenido

HCL a JSON

Convierte la configuración HCL de estilo Terraform en JSON equivalente.

Entrada
Salida

HCL a JSON

Pega HCL — el lenguaje que usan Terraform, Packer y otras herramientas de HashiCorp — y este convertidor devuelve el JSON equivalente. Maneja las formas cotidianas de un archivo .tf real: atributos de nivel superior y bloques con cero o más etiquetas de cadena tales como resource "aws_instance" "web", anidados dentro de otros bloques tan profundos como tu configuración lo requiera. Los bloques etiquetados se convierten usando la misma convención que la propia sintaxis .tf.json de Terraform, así que un recurso con un tipo y un nombre termina bajo resource → type → name en el resultado, y los bloques repetidos en la misma ruta — dos bloques ingress dentro de un recurso, digamos — se convierten en una matriz JSON en lugar de sobrescribirse entre sí.

Las cadenas, números, booleanos, null, listas y objetos literales en línea (tags = { Name = "web" }) se convierten directamente. Las cadenas heredoc (<<EOT ... EOT y la forma indentada <<-EOT) se convierten en cadenas JSON simples con sus saltos de línea conservados, y las interpolaciones ${var.name} — junto con referencias simples como var.region o una llamada como merge(a, b) — permanecen como texto literal en lugar de ser evaluadas, ya que ninguna herramienta de navegador puede resolver variables o proveedores de Terraform.

Las opciones cubren el ancho de indentación (2 espacios, 4 espacios, tabulaciones o minificado), ordenamiento alfabético de claves, conservación o descarte de comentarios, y la elección entre un único objeto JSON fusionado o una lista plana de bloques — cada uno con su tipo, etiquetas y cuerpo — para secuencias de comandos más fáciles. Las claves de atributos duplicadas dentro de un bloque se marcan en el conteo en vivo en lugar de ser descartadas silenciosamente, y se aceptan tanto los finales de línea de Windows como de Unix.

Todo se ejecuta localmente en tu navegador — tu configuración nunca se carga, lo que importa cuando nombra recursos reales, IPs o IDs de cuenta. Copia el JSON, descárgalo como un archivo .txt, o envíalo directamente a otra herramienta para continuar trabajando.

Preguntas frecuentes

¿Esto evalúa variables y funciones de Terraform?
No. Las interpolaciones como ${var.region} y expresiones simples como var.region o merge(a, b) se mantienen como texto literal ${...} en la salida, exactamente como lo representa la propia sintaxis JSON de Terraform — esta herramienta no tiene acceso a tus valores de variable, estado o proveedores.
¿Cómo se representan bloques como resource "aws_instance" "web"?
Por etiqueta, anidados en el objeto: resource → aws_instance → web contiene los atributos de ese bloque. Coincide con la convención que el propio Terraform usa para archivos .tf.json.
¿Qué pasa con las cadenas heredoc?
Tanto <<EOT como la forma indentada <<-EOT se convierten en una cadena JSON normal con saltos de línea reales. La forma indentada tiene su espacio en blanco común inicial eliminado primero, coincidiendo con cómo Terraform lo lee.
¿Puedo obtener una lista plana de bloques en lugar de un objeto único?
Sí — cambia "Forma de salida" a "Lista de bloques" para obtener un array de registros, cada uno con su tipo, etiquetas y cuerpo, que es más fácil para recorrer en un script.
¿Se carga mi configuración HCL en algún lugar?
No. La conversión se ejecuta completamente en tu navegador — nada de lo que pegues aquí, incluyendo nombres de recursos o valores, jamás abandona tu dispositivo.