Loading…

Hakkında Çevrimiçi HCL / Terraform Biçimlendirici

Terraform, Packer ve diğer HashiCorp araçlarının tümü HCL2 konuşur—ve hepsi tutarlı biçimlendirildiğinde daha iyi görünür. Bu HCL Biçimlendirici, yapılandırmanızı girintileme, boşluk ve düzene terraform fmt–stili kurallar uygulayan güvenli bir arka uca gönderir, ardından anlambilimi değiştirmeden normalleştirilmiş HCL2 döndürür.

Temel Özellikler

  • Terraform-stili bloklar, nitelikler, listeler/haritalar ve heredoc'lar için HCL2-destekli biçimlendirme
  • =, virgüller, parantezler ve iç içe bloklar etrafında tutarlı girinti ve boşluk
  • Mümkün olduğunda okunabilirlik için yorumları ve kasıtlı boş satırları korur
  • .tf, .hcl, HCL-tabanlı .tfvars ve Packer .pkr.hcl dosyalarıyla çalışır
  • İdempotent çıktı: biçimlendiriciyi tekrar çalıştırmak aynı sonucu verir
  • Minimal yüzey alanı: tek bir “Biçimlendir” eylemi, tartışılacak stil düğmeleri yok
  • Biçimlendirilmiş sonucun düzenleyiciden tek tıkla kopyalanması veya indirilmesi
  • Güvenli bir uç nokta aracılığıyla sunucu destekli işleme — hızlı düzeltmeler için harika; yüksek hassasiyetli kod için yerel CLI tercih edin

🔧 HCL Biçimlendirici Nasıl Kullanılır for hcl-formatter

1

1. Kodunuzu Yapıştırın veya Bırakın

HCL/Terraform dosyanızı (.tf, HCL tabanlı .tfvars, .hcl, .pkr.hcl, vb.) açın ve içeriği düzenleyiciye yapıştırın veya tarayıcınız destekliyorsa dosyayı bırakın.

2

2. “Biçimlendir”e Tıklayın

Biçimlendir düğmesine tıklayın. Yapılandırmanız, girintileme, boşluk ve düzen için terraform fmt tarzı kurallar uygulayan güvenli bir arka uca gönderilir ve biçimlendirilmiş HCL2 döndürülür.

3

3. İnceleyin, Kopyalayın veya İndirin

Sonucu düzenleyicide kontrol edin, ardından IDE'nize geri kopyalayın veya biçimlendirilmiş dosyayı indirip deponuza kaydedin.

Teknik Özellikler

Yürütme Modeli

Biçimlendirici, HCL2 için terraform fmt tarzı düzen normalleştirmesini taklit etmek üzere sunucu destekli olarak tasarlanmıştır.

YönAyrıntı
ModSunucu destekli (tarayıcı içi WASM yok)
KapsamBoşluk, girintileme, aralık, temel düzen
Yeniden SıralamaKaynak veya blokların anlamsal yeniden sıralanması yok
SeçeneklerYok — tahmin edilebilir çıktı için tek Biçimlendir eylemi
SınırlarYaklaşık 1–2 MB giriş, ~25s sunucu zaman aşımı (ayarlamaya tabi)
SaklamaGeçici işleme — giriş biçimlendirmeden sonra atılır
Herhangi bir çevrimiçi araçta olduğu gibi, üretim sırlarını yapıştırmaktan kaçının. Hassas kodlar için yerel olarak terraform fmt veya packer fmt kullanın.

Dil Kapsamı

Terraform ve diğer HashiCorp araçlarında kullanılan yaygın HCL2 yapılarını anlar.

YapıÖrneklerNotlar
Bloklarresource, variable, output, module, locals, job, taskİç içe blok yapısı korunur
Özniteliklername = "web", count = 2= etrafında ve öznitelikler arasında boşluk normalleştirilir
Koleksiyonlar[1, 2, 3], { key = value }Listeler ve haritalar/nesneler için düzenli düzen
Heredoc'lar<<-EOF ... EOFİşaretleyiciler korunur; mümkün olduğunda girinti normalleştirilir
Yorumlar# ve // tarzı yorumlarNiyeti ve belgelendirmeyi korumak için mümkün olduğunda saklanır

Mini Öncesi/Sonrası

Bir Terraform kaynağında girinti ve boşluk temizliğinin küçük bir örneği.

# Önce
resource "aws_s3_bucket" "b"{bucket="demo"
  tags={Name="demo"}}

# Sonra
resource "aws_s3_bucket" "b" {
  bucket = "demo"

  tags = {
    Name = "demo"
  }
}
Yalnızca düzen dönüşümü: tanımlayıcılar, ifadeler ve referanslar değişmeden kalır.

Hatalar ve Özel Durumlar

Biçimlendirme başarısız olursa veya hata döndürürse, genellikle HCL2 girişindeki ayrıştırma sorunlarından kaynaklanır.

BelirtiMuhtemel nedenKontrol edilecekler
Çıktı yok / ayrıştırma hatasıKapatılmamış süslü parantez, köşeli parantez veya parantezEşleşen { }, [ ], ( ) çiftlerini sayın ve tüm blokları kapatın
Heredoc sorunlarıEksik veya uyuşmayan sonlandırıcıEOF gibi işaretleyicilerin tam olarak ve kendi satırlarında göründüğünden emin olun
Karışık stillerSekmeler/boşluklar veya başıboş karakterlerGirintiyi normalleştirin, başıboş kontrol karakterlerini kaldırın
.tfvars karışıklığıJSON vs HCL sözdizimi*.tfvars.json dosyaları için JSON biçimlendirici veya terraform fmt kullanın

Komut Satırı Alternatifleri

Günlük Altyapı Kod olarak İş Akışları için, yerel olarak ve CI'da resmi biçimlendiricileri kullanın ve bu çevrimiçi aracı hızlı geçici temizlikler için saklayın.

macOS / Linux

Terraform: yerinde biçimlendir

terraform fmt

Mevcut dizindeki .tf ve HCL tabanlı .tfvars dosyalarını yeniden yazar.

Terraform: özyinelemeli CI kontrolü (yazma yok)

terraform fmt -check -recursive

Herhangi bir dosyanın biçimlendirme gerektirmesi durumunda sıfır dışı çıkar — CI ve ön işleme kancaları için mükemmel.

Packer: şablonu biçimlendir

packer fmt path/to/template.pkr.hcl

Belirtilen Packer HCL dosyasını yerinde biçimlendirir.

Windows (PowerShell)

Tüm Terraform dosyalarını özyinelemeli olarak biçimlendir

Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }

Geçerli dizin altında bulunan her .tf dosyasında terraform fmt çalıştırır.

CI tarzı biçimlendirme kontrolü

terraform fmt -check -recursive

Biçimlendirme güncel olmadığında derleme hatası vermek için yapı işlem hatlarında kullanın.

GitHub Actions

Biçimlendirme gerekirse derlemeyi durdur

steps:
  - uses: hashicorp/setup-terraform@v3
  - run: terraform fmt -check -recursive

Herhangi bir Terraform dosyası doğru biçimlendirilmemişse iş akışını durdurur.

Çekme isteklerinde otomatik biçimlendirme (isteğe bağlı)

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)

terraform fmt uygular ve yalnızca biçimlendirme içeren bir commit'i dal üzerine geri iter.

Düzenlenmiş veya gizli altyapı kodları için, çevrimiçi biçimlendiricilere dosya göndermek yerine yerel CLI araçlarını tercih edin ve CI'da `terraform fmt -check -recursive` kullanımını zorunlu kılın.

Pratik Uygulamalar

PR Hijyeni & İncelemeler

İnceleyicilerin gerçek altyapı değişikliklerine odaklanabilmesi için boşluk ve girintileri standartlaştırın.

  • Bir çekme isteği açmadan önce biçimlendirmeyi çalıştırın
  • Terraform incelemelerindeki ayrıntılı stil yorumlarını azaltın
  • Git farklarını küçük ve anlamlı tutun

Terraform Modül Geliştirme

Modülleri ekipler, depolar ve kayıt defterleri arasında tutarlı tutun.

  • Paylaşılan modüllerde değişken ve çıktı bloklarını hizalayın
  • Örnek yapılandırmaların tek bir kurum stilini takip etmesini sağlayın

CI Bekçiliği

Zamanla stil sapmasını önlemek için CI'da terraform fmt kontrollerini kullanın.

  • `terraform fmt -check -recursive`'ı zorunlu bir işlem hattı adımı olarak ekleyin
  • Tüm .tf dosyaları biçimlendirilene kadar birleştirmeleri engelleyin

Uyum Sağlama & Dokümantasyon

Okunabilir örnekler, yeni ekip üyelerinin hem Terraform'u hem de kurum stilini hızla öğrenmesine yardımcı olur.

  • README'lerde tutarlı biçimlendirilmiş parçacıklar yayınlayın
  • Dahili Terraform eğitim oturumlarında temiz örnekler kullanın

❓ Frequently Asked Questions

🔒Kodum yerel olarak işleniyor mu?

Hayır. Bu HCL biçimlendiricisi sunucu tabanlıdır: girdiniz biçimlendirme için güvenli bir uç noktaya gönderilir ve sonuçta oluşan HCL tarayıcınıza döndürülür. Yüksek hassasiyetli veya düzenlenmiş altyapı kodları için, `terraform fmt` (veya `packer fmt`) komutunu yerel olarak çalıştırmayı tercih edin.

🛡️Gizli bilgileri buraya yapıştırabilir miyim?

Herhangi bir çevrimiçi araca üretim gizliliklerini yapıştırmamanızı şiddetle tavsiye ederiz. Hizmet güvenli olmasına ve geçici işlem için tasarlanmış olsa da, uzun ömürlü veya oldukça hassas kimlik bilgileri yalnızca yerel dosyalarda, gizli depolarda veya CI kasalarında bulunmalıdır — tarayıcı araçlarında değil.

🧩Biçimlendirme yapılandırma davranışını değiştirir mi?

Hayır. Biçimlendirici düzene odaklanır: boşluk, girinti ve aralık. Kaynak blokları, argümanlar, ifadeler ve referanslar aynı kalır, orijinal HCL'nin geçerli olduğu varsayılarak.

📄.tfvars dosyalarını biçimlendirebilir miyim?

Evet, .tfvars dosyası HCL sözdizimini kullandığı sürece. Terraform ayrıca `.tfvars.json` üzerinden JSON tabanlı değişkenleri destekler; bunlar JSON kurallarını izler ve bir JSON biçimlendiricisi veya `terraform fmt` tarafından işlenmesi daha uygundur.

⚙️Bu, `terraform fmt`'ten nasıl farklı?

`terraform fmt`, Terraform ile birlikte gelen standart biçimlendiricidir ve yerel geliştirme ve CI için idealdir. Bu web aracı, CLI elinizde olmadığında veya tarayıcıda küçük bir kod parçasını düzenlemek istediğinizde hızlı, geçici temizlikler için tasarlanmıştır.

🧯Biçimlendirme neden başarısız oldu?

Çoğu başarısızlık ayrıştırma hatalarıdır: kapatılmamış parantezler veya köşeli ayraçlar, hatalı oluşturulmuş heredocs veya JSON tarzı tfvars'ların HCL sözdizimiyle karıştırılması. Yapısal sorunu düzeltin (veya doğru lehçe/biçimlendiriciyi kullanın) ve tekrar deneyin.

Pro Tips

CI Tip

Büyük altyapı depolarında biçimlendirme kaymasını önlemek için CI'da `terraform fmt -check -recursive` uygulayın.

Best Practice

Gizli bilgileri veya durumla ilgili verileri çevrimiçi araçlara yapıştırmaktan kaçının; yapılandırma örneklerini temiz tutun ve gerçek altyapı kodları için yerel CLI biçimlendiricilerini çalıştırın.

Best Practice

Terraform dosyalarının platformlar arasında temiz, kararlı farklar üretmesi için editörünüzde sondaki yeni satırları ve girintileri normalleştirin.

Best Practice

`terraform fmt` çalıştıran bir ön işleme kancası ekleyin, böylece çekme istekleri zaten biçimlendirilmiş olarak gelsin ve inceleme konuşmaları mimari ve risk üzerine odaklanabilsin.

Additional Resources

Other Tools