Loading…

Tentang Formatter HCL / Terraform Online

Terraform, Packer, dan alat HashiCorp lainnya semuanya menggunakan HCL2—dan semuanya terlihat lebih baik ketika diformat secara konsisten. Formatter HCL ini mengirimkan konfigurasi Anda ke backend yang aman yang menerapkan aturan gaya terraform fmt untuk indentasi, spasi, dan tata letak, lalu mengembalikan HCL2 yang dinormalisasi sambil membiarkan semantik tidak tersentuh.

Fitur Utama

  • Pemformatan sadar HCL2 untuk blok, atribut, daftar/peta, dan heredoc gaya Terraform
  • Indentasi dan spasi yang konsisten di sekitar =, koma, kurung kurawal, dan blok bersarang
  • Mempertahankan komentar dan baris kosong yang disengaja jika memungkinkan untuk keterbacaan
  • Bekerja dengan file .tf, .hcl, .tfvars berbasis HCL, dan .pkr.hcl Packer
  • Output idempoten: menjalankan formatter lagi menghasilkan hasil yang sama
  • Area permukaan minimal: satu aksi 'Format', tidak ada tombol gaya untuk diperdebatkan
  • Salin atau unduh hasil yang diformat dari editor dengan satu klik
  • Pemrosesan didukung server melalui endpoint yang diamankan — bagus untuk perbaikan cepat; lebih suka CLI lokal untuk kode yang sangat sensitif

🔧 Cara Menggunakan Formatter HCL for hcl-formatter

1

1. Tempel atau Jatuhkan Kode Anda

Buka file HCL/Terraform Anda (.tf, .tfvars berbasis HCL, .hcl, .pkr.hcl, dll.) dan tempelkan isinya ke editor, atau jatuhkan file jika browser Anda mendukungnya.

2

2. Klik “Format”

Klik tombol Format. Konfigurasi Anda dikirim ke backend aman yang menerapkan aturan gaya terraform fmt untuk indentasi, spasi, dan tata letak, lalu mengembalikan HCL2 yang diformat.

3

3. Tinjau, Salin atau Unduh

Periksa hasilnya di editor, lalu salin kembali ke IDE Anda atau unduh file yang telah diformat dan komit ke repositori Anda.

Spesifikasi Teknis

Model Eksekusi

Formatter didukung server dan dirancang untuk meniru normalisasi tata letak gaya terraform fmt untuk HCL2.

AspekDetail
ModeDidukung server (tanpa WASM di browser)
CakupanSpasi putih, indentasi, jarak, tata letak dasar
Pengurutan UlangTidak ada pengurutan ulang semantik sumber daya atau blok
OpsiTidak ada — aksi Format tunggal untuk keluaran yang dapat diprediksi
BatasSekitar 1–2 MB input, waktu tunggu server ~25 detik (dapat disesuaikan)
RetensiPemrosesan sementara — input dibuang setelah pemformatan
Seperti alat online lainnya, hindari menempelkan rahasia produksi. Gunakan terraform fmt atau packer fmt secara lokal untuk kode sensitif.

Cakupan Bahasa

Memahami konstruk HCL2 umum yang digunakan di Terraform dan alat HashiCorp lainnya.

KonstrukContohCatatan
Blokresource, variable, output, module, locals, job, taskStruktur blok bersarang dipertahankan
Atributname = "web", count = 2Spasi dinormalisasi di sekitar = dan antara atribut
Koleksi[1, 2, 3], { key = value }Tata letak seragam untuk daftar dan peta/objek
Heredocs<<-EOF ... EOFPenanda dipertahankan; indentasi dinormalisasi jika memungkinkan
KomentarKomentar gaya # dan //Dipertahankan jika memungkinkan untuk menjaga maksud dan dokumentasi

Sebelum/Sesudah Mini

Contoh kecil pembersihan indentasi dan spasi dalam sumber daya Terraform.

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

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

  tags = {
    Name = "demo"
  }
}
Transformasi tata letak saja: pengenal, ekspresi, dan referensi tetap tidak berubah.

Kesalahan & Kasus Tepi

Jika pemformatan gagal atau mengembalikan kesalahan, biasanya disebabkan oleh masalah parsing dalam input HCL2.

GejalaKemungkinan penyebabYang harus diperiksa
Tidak ada keluaran / kesalahan parsingKurung kurawal, kurung siku, atau kurung yang tidak tertutupHitung pasangan { }, [ ], ( ) yang cocok dan tutup semua blok
Masalah heredocTerminator hilang atau tidak cocokPastikan penanda seperti EOF muncul tepat dan pada barisnya sendiri
Gaya campuranTab/spasi atau karakter liarNormalisasi indentasi, hapus karakter kontrol liar
Kebingungan .tfvarsSintaks JSON vs HCLGunakan pemformat JSON atau terraform fmt untuk file *.tfvars.json

Alternatif Baris Perintah

Untuk alur kerja Infrastruktur sebagai Kode sehari-hari, gunakan pemformat resmi secara lokal dan di CI, dan simpan alat daring ini untuk pembersihan ad-hoc cepat.

macOS / Linux

Terraform: format di tempat

terraform fmt

Menulis ulang file .tf dan .tfvars berbasis HCL di direktori saat ini.

Terraform: pemeriksaan CI rekursif (tanpa penulisan)

terraform fmt -check -recursive

Keluar non-nol jika ada file yang perlu diformat — sempurna untuk CI dan pengait pra-komit.

Packer: format templat

packer fmt path/to/template.pkr.hcl

Memformat file HCL Packer yang ditentukan di tempat.

Windows (PowerShell)

Format semua file Terraform secara rekursif

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

Menjalankan terraform fmt pada setiap file .tf yang ditemukan di bawah direktori saat ini.

Pemeriksaan format gaya CI

terraform fmt -check -recursive

Digunakan dalam pipeline build untuk gagal ketika format tidak sesuai.

GitHub Actions

Gagalkan build jika format diperlukan

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

Menghentikan workflow ketika ada file Terraform yang tidak diformat dengan benar.

Format otomatis pada pull request (opsional)

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)

Menerapkan terraform fmt dan mendorong commit hanya format kembali ke cabang.

Untuk kode infrastruktur yang diatur atau rahasia, lebih baik gunakan alat CLI lokal dan terapkan `terraform fmt -check -recursive` di CI daripada mengirim file ke formatter online.

Aplikasi Praktis

Kebersihan & Tinjauan PR

Normalisasikan spasi dan indentasi agar peninjau dapat fokus pada perubahan infrastruktur yang sebenarnya.

  • Jalankan format sebelum membuka pull request
  • Kurangi komentar gaya yang cerewet dalam tinjauan Terraform
  • Jaga diff git tetap kecil dan bermakna

Pengembangan Modul Terraform

Jaga modul tetap konsisten di seluruh tim, repositori, dan registri.

  • Sejajarkan blok variabel dan output dalam modul bersama
  • Pastikan konfigurasi contoh sesuai dengan gaya tunggal rumah

Penjagaan Gerbang CI

Gunakan pemeriksaan terraform fmt di CI untuk mencegah pergeseran gaya seiring waktu.

  • Tambahkan `terraform fmt -check -recursive` sebagai langkah pipeline wajib
  • Blokir penggabungan hingga semua file .tf diformat

Onboarding & Dokumen

Contoh yang mudah dibaca membantu anggota tim baru mempelajari Terraform dan gaya rumah dengan cepat.

  • Terbitkan cuplikan yang diformat secara konsisten di README
  • Gunakan contoh bersih dalam sesi pelatihan Terraform internal

❓ Frequently Asked Questions

🔒Apakah kode saya diproses secara lokal?

Tidak. Formatter HCL ini didukung server: input Anda dikirim ke endpoint aman untuk diformat dan HCL yang dihasilkan dikembalikan ke browser Anda. Untuk kode infrastruktur yang sangat sensitif atau diatur, lebih baik jalankan `terraform fmt` (atau `packer fmt`) secara lokal.

🛡️Bolehkah saya menempelkan rahasia di sini?

Kami sangat menyarankan untuk tidak menempelkan rahasia produksi ke dalam alat online apa pun. Meskipun layanan ini diamankan dan dirancang untuk pemrosesan sementara, kredensial yang berumur panjang atau sangat sensitif seharusnya hanya disimpan dalam file lokal, penyimpanan rahasia, atau brankas CI — bukan di alat peramban.

🧩Apakah pemformatan mengubah perilaku konfigurasi?

Tidak. Pemformat berfokus pada tata letak: spasi putih, indentasi, dan jarak. Blok sumber daya, argumen, ekspresi, dan referensi tetap sama, dengan asumsi HCL asli valid.

📄Bisakah saya memformat file .tfvars?

Ya, selama file .tfvars menggunakan sintaks HCL. Terraform juga mendukung variabel berbasis JSON melalui `.tfvars.json`; file tersebut mengikuti aturan JSON dan lebih baik ditangani oleh pemformat JSON atau `terraform fmt` itu sendiri.

⚙️Apa bedanya dengan `terraform fmt`?

`terraform fmt` adalah pemformat resmi yang disertakan dengan Terraform dan ideal untuk pengembangan lokal dan CI. Alat web ini dimaksudkan untuk pembersihan cepat dan ad-hoc ketika Anda tidak memiliki CLI atau ingin merapikan cuplikan kecil di peramban.

🧯Mengapa pemformatan gagal?

Sebagian besar kegagalan adalah kesalahan parsing: kurung atau braket yang tidak ditutup, heredoc yang salah format, atau pencampuran tfvars gaya JSON dengan sintaks HCL. Perbaiki masalah struktural (atau gunakan dialek/pemformat yang benar) dan coba lagi.

Pro Tips

CI Tip

Terapkan `terraform fmt -check -recursive` di CI untuk mencegah pergeseran pemformatan di seluruh repositori infrastruktur besar.

Best Practice

Hindari menempelkan rahasia atau data terkait status ke alat online; jaga contoh konfigurasi tetap bersih dan jalankan pemformat CLI lokal untuk kode infrastruktur nyata.

Best Practice

Normalisasikan baris baru akhir dan indentasi di editor Anda agar file Terraform menghasilkan diff yang bersih dan stabil di berbagai platform.

Best Practice

Tambahkan kait pra-komit yang menjalankan `terraform fmt` agar permintaan tarik sudah diformat dan percakapan ulasan dapat tetap fokus pada arsitektur dan risiko.

Additional Resources

Other Tools

🔧 Formatter HCL Online — Pembersihan HCL2 & Pemformatan Terraform (Gaya terraform fmt) | Encode64