Przejdź do treści

HCL do JSON

Konwertuj konfiguracje HCL w stylu Terraform do równoważnego JSON.

Wejście
Wynik

HCL do JSON

Wklej HCL — język używany przez Terraform, Packer i inne narzędzia HashiCorp — a ten konwerter zwróci równoważny JSON. Obsługuje typowe kształty rzeczywistego pliku .tf: atrybuty najwyższego poziomu i bloki z zerem lub więcej etykietami łańcuchowymi, takimi jak resource "aws_instance" "web", zagnieżdżone wewnątrz innych bloków tak głębokie, jak twoja konfiguracja sięga. Bloki z etykietami są konwertowane przy użyciu tej samej konwencji co własna składnia .tf.json Terraform, więc zasób z typem i nazwą ląduje pod resource → type → name w wyniku, a powtarzające się bloki na tej samej ścieżce — dwa bloki ingress w ramach jednego zasobu — stają się tablicą JSON zamiast wzajemnego nadpisywania się.

Łańcuchy, liczby, wartości logiczne, null, listy i wbudowane literały obiektów (tags = { Name = "web" }) konwertują się bezpośrednio. Ciągi heredoc (<<EOT ... EOT i odsunięta forma <<-EOT) stają się zwykłymi ciągami JSON z zachowanymi podziałami linii, a interpolacje ${var.name} — wraz z odwołaniami takimi jak var.region lub wywołaniami takimi jak merge(a, b) — pozostają jako tekst dosłowny zamiast być oceniane, ponieważ żadne narzędzie przeglądarki nie może rozwiązać zmiennych Terraform ani dostawców.

Opcje obejmują szerokość wcięcia (2 spacje, 4 spacje, tabulatory lub zminifikowane), sortowanie kluczy alfabetycznie, zachowanie lub odrzucenie komentarzy oraz wybór między jednym scalonym obiektem JSON lub płaską listą bloków — każdy z jego typem, etykietami i treścią — do łatwiejszego pisania skryptów. Zduplikowane klucze atributów w bloku są flagowane w żywym liczniku zamiast być niezauważalnie upuszczone, a zakończenia linii systemów Windows i Unix są akceptowane.

Wszystko działa lokalnie w twojej przeglądarce — twoja konfiguracja nigdy nie jest przesyłana, co ma znaczenie, gdy zawiera rzeczywiste zasoby, adresy IP lub identyfikatory kont. Skopiuj JSON, pobierz go jako plik .txt lub wyślij go bezpośrednio do innego narzędzia, aby kontynuować pracę.

Częste pytania

Czy to oblicza zmienne i funkcje Terraform?
Nie. Interpolacje takie jak ${var.region} i wyrażenia takie jak var.region lub merge(a, b) są przechowywane jako dosłowny tekst ${...} w wyniku, dokładnie tak, jak reprezentuje je własna składnia JSON Terraform — to narzędzie nie ma dostępu do twoich wartości zmiennych, stanu ani dostawców.
Jak są reprezentowane bloki takie jak resource "aws_instance" "web"?
Według etykiety, zagnieżdżone w obiekcie: resource → aws_instance → web zawiera atrybuty tego bloku. Odpowiada konwencji, którą sam Terraform używa dla plików .tf.json.
Co się stanie z ciągami heredoc?
Obie formy <<EOT i odsunięta forma <<-EOT konwertują się do zwykłego ciągu JSON z rzeczywistymi podziałami linii. Forma odsunięta ma najpierw usunięte wspólne wiodące białe znaki, co odpowiada temu, jak Terraform go czyta.
Czy mogę uzyskać płaską listę bloków zamiast jednego dużego obiektu?
Tak — przełącz "Format wyjścia" na "Lista bloków", aby uzyskać tablicę rekordów, z których każdy ma swój typ, etykiety i treść, co jest łatwiejsze do przeglądania w skrypcie.
Czy moja konfiguracja HCL jest przesyłana gdziekolwiek?
Nie. Konwersja odbywa się całkowicie w twojej przeglądarce — nic, co tutaj wkleisz, w tym nazwy zasobów lub wartości, nigdy nie opuści twojego urządzenia.