İçeriğe atla

HCL to JSON

Terraform tarzı HCL yapılandırmasını eşdeğer JSON'a dönüştürün.

Giriş
Çıkış

HCL to JSON

HCL'yi yapıştırın — Terraform, Packer ve diğer HashiCorp araçlarının kullandığı dil — ve bu dönüştürücü eşdeğer JSON'u döndürür. Gerçek bir .tf dosyasının her gün kullanılan şekillerini işler: üst düzey öznitelikler ve resource "aws_instance" "web" gibi sıfır veya daha fazla dize etiketi olan bloklar, diğer blokklara derinlik kadar iç içe yerleştirilmiş. Etiketli bloklar, Terraform'un kendi .tf.json söz dizimine aynı kural uygulanarak dönüştürülür, bu nedenle türü ve adı olan bir kaynak resource → type → name altında sonuca iner ve aynı yoldaki tekrarlanan bloklar — örneğin bir kaynak içinde iki ingress bloğu — birbirini hatasız kılmak yerine JSON dizisine dönüşür.

Dizeler, sayılar, boolealer, null, listeler ve satır içi nesne sabit değerleri (tags = { Name = "web" }) doğrudan dönüştürülür. Heredoc dizeleri (<<EOT ... EOT ve girintili <<-EOT formu) satır sonlarını koruyan düz JSON dizelerine dönüşür ve ${var.name} enterpolasyonları — var.region gibi çıplak referanslar veya merge(a, b) gibi bir çağrı gibi — değerlendirilmek yerine hazır metin olarak kalır, çünkü tarayıcı aracı Terraform değişkenlerini veya sağlayıcılarını çözemez.

Seçenekler girinti genişliğini (2 boşluk, 4 boşluk, sekmeler veya sıkıştırılmış), anahtarları alfabetik olarak sıralamayı, yorumları tutmayı veya atlamayı ve bir birleştirilmiş JSON nesnesi ya da düz blok listesi — her biri kendi türü, etiketleri ve gövdesi ile — komut dosyası yazımını kolaylaştırmak için seçmeyi kapsar. Bir blok içindeki yinelenen öznitelik anahtarları canlı sayılarda işaretlenir, sessizce bırakılmaz ve hem Windows hem de Unix satır sonları kabul edilir.

Her şey tarayıcınızda yerel olarak çalışır — yapılandırmanız gerçek kaynakları, IP'leri veya hesap kimliklerini adlandırdığında asla yüklenmez. JSON'u kopyalayın, .txt dosyası olarak indirin veya çalışmaya devam etmek için doğrudan başka bir araca gönderin.

FAQ

Bu, Terraform değişkenlerini ve işlevlerini değerlendirir mi?
Hayır. ${var.region} gibi enterpolasyonlar ve var.region gibi veya merge(a, b) çağrısı gibi çıplak ifadeler, Terraform'un kendi JSON söz dizimine tam olarak sahip olduğu gibi çıktıda hazır ${...} metni olarak kalır — bu araç Terraform değişkenlerinize, durumunuza veya sağlayıcılarınıza erişim sahibi değildir.
resource "aws_instance" "web" gibi bloklar nasıl temsil edilir?
Etikete göre nesne içine iç içe: resource → aws_instance → web bu bloğun özniteliklerini tutar. Terraform'un .tf.json dosyaları için kullandığı kuralla eşleşir.
Heredoc dizeleri ne olur?
Hem <<EOT hem de girintili <<-EOT formu gerçek satır sonlarıyla normal bir JSON dizesine dönüşür. Girintili form ilk olarak ortak baştaki boşluğu çıkarır ve Terraform bunu okuduğu gibi eşleşir.
Tek bir büyük nesne yerine blokların düz bir listesini alabilir miyim?
Evet — "Çıktı Şekli" yi "Blok Listesi"ne geçirin, her biri kendi türü, etiketleri ve gövdesi olan bir kayıt dizisi alırsınız; bu bir betik için döngü yapmak daha kolaydır.
HCL yapılandırması herhangi bir yere yükleniyor mu?
Hayır. Dönüştürme tamamen tarayıcınızda çalışır — buraya yapıştırdığınız hiçbir şey, kaynak adları veya değerleri de dahil olmak üzere, asla cihazınızı terk etmez.