Aller au contenu

HCL vers JSON

Convertissez la configuration HCL de style Terraform en JSON équivalent.

Entrée
Sortie

HCL vers JSON

Collez du HCL — le langage utilisé par Terraform, Packer et autres outils HashiCorp — et ce convertisseur retourne le JSON équivalent. Il gère les formes courantes d'un vrai fichier .tf : attributs de niveau supérieur et blocs avec zéro ou plusieurs étiquettes de chaîne telles que resource "aws_instance" "web", imbriqués dans d'autres blocs aussi profonds que votre configuration le demande. Les blocs étiquetés se convertissent en utilisant la même convention que la syntaxe .tf.json de Terraform elle-même, donc une ressource avec un type et un nom aboutit sous resource → type → name dans le résultat, et les blocs répétés au même chemin — deux blocs ingress dans une ressource, disons — deviennent un tableau JSON au lieu de s'écraser mutuellement.

Les chaînes, nombres, booléens, null, listes et objets littéraux en ligne (tags = { Name = "web" }) se convertissent directement. Les chaînes heredoc (<<EOT ... EOT et la forme indentée <<-EOT) deviennent des chaînes JSON simples avec leurs sauts de ligne conservés, et les interpolations ${var.name} — ainsi que les références simples comme var.region ou un appel comme merge(a, b) — restent comme du texte littéral plutôt que d'être évaluées, puisque aucun outil navigateur ne peut résoudre les variables ou fournisseurs de Terraform.

Les options couvrent la largeur d'indentation (2 espaces, 4 espaces, tabulations ou minifié), tri alphabétique des clés, conservation ou suppression des commentaires, et choix entre un objet JSON fusionné unique ou une liste plate de blocs — chacun avec son type, ses étiquettes et son corps — pour un scripting plus facile. Les clés d'attributs dupliquées dans un bloc sont signalées dans le total en direct plutôt que d'être silencieusement supprimées, et les fins de ligne Windows et Unix sont toutes deux acceptées.

Tout fonctionne localement dans votre navigateur — votre configuration n'est jamais téléchargée, ce qui importe quand elle nomme de vraies ressources, adresses IP ou identifiants de compte. Copiez le JSON, téléchargez-le en tant que fichier .txt, ou envoyez-le directement à un autre outil pour continuer à travailler.

FAQ

Cela évalue-t-il les variables et fonctions Terraform ?
Non. Les interpolations comme ${var.region} et les expressions simples telles que var.region ou merge(a, b) sont conservées comme du texte littéral ${...} dans la sortie, exactement comme la propre syntaxe JSON de Terraform les représente — cet outil n'a pas accès à vos valeurs de variables, à votre état ou à vos fournisseurs.
Comment les blocs comme resource "aws_instance" "web" sont-ils représentés ?
Par étiquette, imbriqué dans l'objet : resource → aws_instance → web contient les attributs de ce bloc. Cela correspond à la convention que Terraform lui-même utilise pour les fichiers .tf.json.
Que se passe-t-il avec les chaînes heredoc ?
Tant <<EOT que la forme indentée <<-EOT se convertissent en une chaîne JSON normale avec de vrais sauts de ligne. La forme indentée a d'abord son espaces blancs commun supprimé, ce qui correspond à la façon dont Terraform la lit.
Puis-je obtenir une liste plate de blocs au lieu d'un seul grand objet ?
Oui — basculez "Format de sortie" vers "Liste de blocs" pour obtenir un tableau d'enregistrements, chacun avec son type, ses étiquettes et son corps, ce qui est plus facile à parcourir dans un script.
Ma configuration HCL est-elle téléchargée quelque part ?
Non. La conversion s'exécute entièrement dans votre navigateur — rien de ce que vous collez ici, y compris les noms de ressources ou les valeurs, ne quitte jamais votre appareil.