Tính năng Chính
- Định dạng nhận biết HCL2 cho khối, thuộc tính, danh sách/bản đồ và heredoc kiểu Terraform
- Thụt lề và khoảng cách nhất quán xung quanh =, dấu phẩy, ngoặc và khối lồng nhau
- Giữ lại nhận xét và dòng trống có chủ đích khi có thể để dễ đọc
- Hoạt động với tệp .tf, .hcl, .tfvars dựa trên HCL và .pkr.hcl của Packer
- Kết quả bất biến: chạy lại công cụ định dạng cho cùng kết quả
- Diện tích bề mặt tối thiểu: một hành động 'Định dạng' duy nhất, không có nút điều chỉnh phong cách để tranh luận
- Sao chép hoặc tải xuống kết quả đã định dạng từ trình chỉnh sửa bằng một cú nhấp chuột
- Xử lý hỗ trợ máy chủ qua điểm cuối được bảo mật — tuyệt vời cho sửa chữa nhanh; ưu tiên CLI cục bộ cho mã cực kỳ nhạy cảm
🔧 Cách Sử dụng Công cụ Định dạng HCL for hcl-formatter
1. Dán hoặc Thả Mã của Bạn
Mở tệp HCL/Terraform của bạn (.tf, .tfvars dựa trên HCL, .hcl, .pkr.hcl, v.v.) và dán nội dung vào trình soạn thảo, hoặc thả tệp nếu trình duyệt của bạn hỗ trợ.
2. Nhấp “Định dạng”
Nhấp nút Định dạng. Cấu hình của bạn được gửi đến một backend an toàn áp dụng các quy tắc kiểu terraform fmt cho thụt lề, khoảng cách và bố cục, sau đó trả về HCL2 đã được định dạng.
3. Xem lại, Sao chép hoặc Tải xuống
Kiểm tra kết quả trong trình soạn thảo, sau đó sao chép nó trở lại IDE của bạn hoặc tải xuống tệp đã định dạng và commit vào kho lưu trữ của bạn.
Thông số Kỹ thuật
Mô hình Thực thi
Trình định dạng được hỗ trợ bởi máy chủ và được thiết kế để mô phỏng chuẩn hóa bố cục kiểu terraform fmt cho HCL2.
| Khía cạnh | Chi tiết |
|---|---|
| Chế độ | Hỗ trợ máy chủ (không có WASM trong trình duyệt) |
| Phạm vi | Khoảng trắng, thụt lề, khoảng cách, bố cục cơ bản |
| Sắp xếp lại | Không sắp xếp lại ngữ nghĩa tài nguyên hoặc khối |
| Tùy chọn | Không có — hành động Định dạng duy nhất cho đầu ra dự đoán được |
| Giới hạn | Khoảng 1–2 MB đầu vào, thời gian chờ máy chủ ~25s (có thể điều chỉnh) |
| Lưu giữ | Xử lý tạm thời — đầu vào bị loại bỏ sau khi định dạng |
Phạm vi Ngôn ngữ
Hiểu các cấu trúc HCL2 phổ biến được sử dụng trong Terraform và các công cụ HashiCorp khác.
| Cấu trúc | Ví dụ | Ghi chú |
|---|---|---|
| Khối | resource, variable, output, module, locals, job, task | Cấu trúc khối lồng nhau được bảo toàn |
| Thuộc tính | name = "web", count = 2 | Khoảng cách được chuẩn hóa xung quanh = và giữa các thuộc tính |
| Bộ sưu tập | [1, 2, 3], { key = value } | Bố cục đồng nhất cho danh sách và bản đồ/đối tượng |
| Văn bản di truyền | <<-EOF ... EOF | Dấu phân cách được giữ nguyên; thụt lề được chuẩn hóa khi có thể |
| Chú thích | Chú thích kiểu # và // | Được giữ lại khi có thể để bảo toàn ý định và tài liệu |
Trước/Sau Thu Nhỏ
Một ví dụ nhỏ về việc dọn dẹp thụt lề và khoảng cách trong tài nguyên Terraform.
# Trước
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Sau
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Lỗi & Trường Hợp Đặc Biệt
Nếu định dạng thất bại hoặc trả về lỗi, thường là do vấn đề phân tích cú pháp trong đầu vào HCL2.
| Triệu chứng | Nguyên nhân có thể | Kiểm tra gì |
|---|---|---|
| Không có đầu ra / lỗi phân tích | Dấu ngoặc nhọn, ngoặc vuông hoặc ngoặc đơn chưa đóng | Đếm các cặp { }, [ ], ( ) khớp nhau và đóng tất cả khối |
| Vấn đề văn bản di truyền | Thiếu hoặc không khớp ký tự kết thúc | Đảm bảo các dấu như EOF xuất hiện chính xác và trên dòng riêng |
| Kiểu hỗn hợp | Tab/dấu cách hoặc ký tự lạ | Chuẩn hóa thụt lề, loại bỏ ký tự điều khiển lạ |
| Nhầm lẫn .tfvars | Cú pháp JSON so với HCL | Sử dụng bộ định dạng JSON hoặc terraform fmt cho tệp *.tfvars.json |
Lựa Chọn Dòng Lệnh
Đối với quy trình làm việc Cơ sở hạ tầng dưới dạng Mã hàng ngày, hãy sử dụng các bộ định dạng chính thức cục bộ và trong CI, và giữ công cụ trực tuyến này cho các lần dọn dẹp nhanh tức thời.
macOS / Linux
Terraform: định dạng tại chỗ
terraform fmtViết lại các tệp .tf và .tfvars dựa trên HCL trong thư mục hiện tại.
Terraform: kiểm tra đệ quy CI (không ghi)
terraform fmt -check -recursiveThoát khác không nếu bất kỳ tệp nào cần định dạng — hoàn hảo cho CI và hook pre-commit.
Packer: định dạng mẫu
packer fmt path/to/template.pkr.hclĐịnh dạng tệp HCL Packer được chỉ định tại chỗ.
Windows (PowerShell)
Định dạng tất cả các tệp Terraform một cách đệ quy
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Chạy terraform fmt trên mỗi tệp .tf được tìm thấy dưới thư mục hiện tại.
Kiểm tra định dạng theo phong cách CI
terraform fmt -check -recursiveSử dụng trong các pipeline xây dựng để thất bại khi định dạng lỗi thời.
GitHub Actions
Làm hỏng bản dựng nếu cần định dạng
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveDừng quy trình làm việc khi bất kỳ tệp Terraform nào không được định dạng đúng.
Tự động định dạng trên các yêu cầu kéo (tùy chọn)
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)Áp dụng terraform fmt và đẩy một commit chỉ định dạng trở lại nhánh.
Ứng Dụng Thực Tiễn
Vệ Sinh & Đánh Giá PR
Chuẩn hóa khoảng trắng và thụt lề để người đánh giá có thể tập trung vào các thay đổi cơ sở hạ tầng thực tế.
- Chạy định dạng trước khi mở một yêu cầu kéo
- Giảm các bình luận về phong cách vụn vặt trong đánh giá Terraform
- Giữ các khác biệt git nhỏ và có ý nghĩa
Phát Triển Mô-đun Terraform
Giữ các mô-đun nhất quán giữa các nhóm, kho lưu trữ và sổ đăng ký.
- Căn chỉnh các khối biến và đầu ra trong các mô-đun chia sẻ
- Đảm bảo các cấu hình ví dụ phù hợp với một phong cách nội bộ duy nhất
Kiểm Soát CI
Sử dụng kiểm tra terraform fmt trong CI để ngăn chặn sự trôi dạt phong cách theo thời gian.
- Thêm `terraform fmt -check -recursive` như một bước pipeline bắt buộc
- Chặn việc hợp nhất cho đến khi tất cả các tệp .tf được định dạng
Hòa Nhập & Tài Liệu
Các ví dụ dễ đọc giúp thành viên mới trong nhóm học cả Terraform và phong cách nội bộ nhanh chóng.
- Xuất bản các đoạn mã được định dạng nhất quán trong README
- Sử dụng các ví dụ sạch sẽ trong các buổi đào tạo Terraform nội bộ
❓ Frequently Asked Questions
🔒Mã của tôi có được xử lý cục bộ không?
🛡️Tôi có thể dán thông tin bí mật vào đây không?
🧩Định dạng có thay đổi hành vi cấu hình không?
📄Tôi có thể định dạng tệp .tfvars không?
JSON qua `.tfvars.json`; những tệp đó tuân theo quy tắc JSON và được xử lý tốt hơn bởi trình định dạng JSON hoặc chính `terraform fmt`.⚙️Công cụ này khác với `terraform fmt` như thế nào?
🧯Tại sao định dạng thất bại?
JSON với cú pháp HCL. Sửa lỗi cấu trúc (hoặc sử dụng phương ngữ/trình định dạng chính xác) và thử lại.Pro Tips
Áp dụng `terraform fmt -check -recursive` trong CI để ngăn chặn sự sai lệch định dạng trên các kho lưu trữ hạ tầng lớn.
Tránh dán thông tin bí mật hoặc dữ liệu liên quan đến trạng thái vào các công cụ trực tuyến; giữ các ví dụ cấu hình được làm sạch và chạy trình định dạng CLI cục bộ cho mã hạ tầng thực tế.
Chuẩn hóa dòng mới cuối và thụt lề trong trình soạn thảo của bạn để các tệp Terraform tạo ra sự khác biệt sạch sẽ, ổn định trên mọi nền tảng.
Thêm một hook pre-commit chạy `terraform fmt` để các pull request đã được định dạng sẵn và các cuộc thảo luận đánh giá có thể tập trung vào kiến trúc và rủi ro.
Additional Resources
Other Tools
- Bộ Làm Đẹp CSS
- Bộ Làm Đẹp HTML
- Bộ Làm Đẹp Javascript
- Bộ Làm Đẹp PHP
- Bộ Chọn Màu
- Bộ Trích Xuất Sprite
- Bộ Giải Mã Base64
- Bộ Mã Hóa Base64
- Bộ Định Dạng Csharp
- Bộ Định Dạng CSV
- Dockerfile Formatter
- Bộ Định Dạng Elm
- Bộ Định Dạng ENV
- Bộ Định Dạng Go
- Bộ Định Dạng GraphQL
- Bộ Định Dạng INI
- Bộ Định Dạng JSON
- Bộ Định Dạng Latex
- Bộ Định Dạng Markdown
- Bộ Định Dạng ObjectiveC
- Php Formatter
- Bộ Định Dạng Proto
- Bộ Định Dạng Python
- Bộ Định Dạng Ruby
- Bộ Định Dạng Rust
- Bộ Định Dạng Scala
- Bộ Định Dạng Tập Lệnh Shell
- Bộ Định Dạng SQL
- Trình Định Dạng SVG
- Trình Định Dạng Swift
- Trình Định Dạng TOML
- Typescript Formatter
- Trình Định Dạng XML
- Trình Định Dạng YAML
- Trình Định Dạng Yarn
- Bộ Thu Nhỏ CSS
- Html Minifier
- Javascript Minifier
- Bộ Thu Nhỏ JSON
- Trình Thu Nhỏ XML
- Trình Xem Tiêu Đề HTTP
- PDF Sang Văn Bản
- Bộ Kiểm Tra Regex
- Bộ Kiểm Tra Xếp Hạng SERP
- Tra Cứu Whois