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. 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. 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. 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.
| Aspek | Detail |
|---|---|
| Mode | Didukung server (tanpa WASM di browser) |
| Cakupan | Spasi putih, indentasi, jarak, tata letak dasar |
| Pengurutan Ulang | Tidak ada pengurutan ulang semantik sumber daya atau blok |
| Opsi | Tidak ada — aksi Format tunggal untuk keluaran yang dapat diprediksi |
| Batas | Sekitar 1–2 MB input, waktu tunggu server ~25 detik (dapat disesuaikan) |
| Retensi | Pemrosesan sementara — input dibuang setelah pemformatan |
Cakupan Bahasa
Memahami konstruk HCL2 umum yang digunakan di Terraform dan alat HashiCorp lainnya.
| Konstruk | Contoh | Catatan |
|---|---|---|
| Blok | resource, variable, output, module, locals, job, task | Struktur blok bersarang dipertahankan |
| Atribut | name = "web", count = 2 | Spasi dinormalisasi di sekitar = dan antara atribut |
| Koleksi | [1, 2, 3], { key = value } | Tata letak seragam untuk daftar dan peta/objek |
| Heredocs | <<-EOF ... EOF | Penanda dipertahankan; indentasi dinormalisasi jika memungkinkan |
| Komentar | Komentar 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"
}
}
Kesalahan & Kasus Tepi
Jika pemformatan gagal atau mengembalikan kesalahan, biasanya disebabkan oleh masalah parsing dalam input HCL2.
| Gejala | Kemungkinan penyebab | Yang harus diperiksa |
|---|---|---|
| Tidak ada keluaran / kesalahan parsing | Kurung kurawal, kurung siku, atau kurung yang tidak tertutup | Hitung pasangan { }, [ ], ( ) yang cocok dan tutup semua blok |
| Masalah heredoc | Terminator hilang atau tidak cocok | Pastikan penanda seperti EOF muncul tepat dan pada barisnya sendiri |
| Gaya campuran | Tab/spasi atau karakter liar | Normalisasi indentasi, hapus karakter kontrol liar |
| Kebingungan .tfvars | Sintaks JSON vs HCL | Gunakan 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 fmtMenulis ulang file .tf dan .tfvars berbasis HCL di direktori saat ini.
Terraform: pemeriksaan CI rekursif (tanpa penulisan)
terraform fmt -check -recursiveKeluar non-nol jika ada file yang perlu diformat — sempurna untuk CI dan pengait pra-komit.
Packer: format templat
packer fmt path/to/template.pkr.hclMemformat 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 -recursiveDigunakan 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 -recursiveMenghentikan 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.
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?
🛡️Bolehkah saya menempelkan rahasia di sini?
🧩Apakah pemformatan mengubah perilaku konfigurasi?
📄Bisakah saya memformat file .tfvars?
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`?
🧯Mengapa pemformatan gagal?
JSON dengan sintaks HCL. Perbaiki masalah struktural (atau gunakan dialek/pemformat yang benar) dan coba lagi.Pro Tips
Terapkan `terraform fmt -check -recursive` di CI untuk mencegah pergeseran pemformatan di seluruh repositori infrastruktur besar.
Hindari menempelkan rahasia atau data terkait status ke alat online; jaga contoh konfigurasi tetap bersih dan jalankan pemformat CLI lokal untuk kode infrastruktur nyata.
Normalisasikan baris baru akhir dan indentasi di editor Anda agar file Terraform menghasilkan diff yang bersih dan stabil di berbagai platform.
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
- Pemerindah CSS
- Pemerindah HTML
- Pemerindah Javascript
- Pemerindah PHP
- Pemilih Warna
- Ekstraktor Sprite
- Dekoder Base64
- Encoder Base64
- Pemformat Csharp
- Pemformat CSV
- Dockerfile Formatter
- Pemformat Elm
- Pemformat ENV
- Pemformat Go
- Pemformat GraphQL
- Pemformat INI
- Pemformat JSON
- Pemformat Latex
- Pemformat Markdown
- Pemformat ObjectiveC
- Php Formatter
- Pemformat Proto
- Pemformat Python
- Pemformat Ruby
- Pemformat Rust
- Pemformat Scala
- Pemformat Skrip Shell
- Pemformat SQL
- Pemformat SVG
- Pemformat Swift
- Pemformat TOML
- Typescript Formatter
- Pemformat XML
- Pemformat YAML
- Pemformat Yarn
- Pengecil CSS
- Html Minifier
- Javascript Minifier
- Pengecil JSON
- Pengecil XML
- Penampil Header HTTP
- PDF Ke Teks
- Penguji Regex
- Pemeriksa Peringkat SERP
- Pencarian Whois