Loading…

Giới thiệu Công cụ Định dạng HCL / Terraform Trực tuyến

Terraform, Packer và các công cụ HashiCorp khác đều sử dụng HCL2—và tất cả đều trông đẹp hơn khi được định dạng nhất quán. Công cụ Định dạng HCL này gửi cấu hình của bạn đế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 chuẩn hóa trong khi giữ nguyên ngữ nghĩa.

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

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

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

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ạnhChi tiết
Chế độHỗ trợ máy chủ (không có WASM trong trình duyệt)
Phạm viKhoảng trắng, thụt lề, khoảng cách, bố cục cơ bản
Sắp xếp lạiKhông sắp xếp lại ngữ nghĩa tài nguyên hoặc khối
Tùy chọnKhông có — hành động Định dạng duy nhất cho đầu ra dự đoán được
Giới hạnKhoả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
Như với bất kỳ công cụ trực tuyến nào, tránh dán các bí mật sản xuất. Sử dụng terraform fmt hoặc packer fmt cục bộ cho mã nhạy cảm.

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úcVí dụGhi chú
Khốiresource, variable, output, module, locals, job, taskCấu trúc khối lồng nhau được bảo toàn
Thuộc tínhname = "web", count = 2Khoả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 ... EOFDấu phân cách được giữ nguyên; thụt lề được chuẩn hóa khi có thể
Chú thíchChú 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"
  }
}
Chỉ biến đổi bố cục: định danh, biểu thức và tham chiếu vẫn giữ nguyên.

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ứngNguyên nhân có thểKiểm tra gì
Không có đầu ra / lỗi phân tíchDấ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ềnThiế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ợpTab/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 .tfvarsCú pháp JSON so với HCLSử 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 fmt

Viế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 -recursive

Thoá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 -recursive

Sử 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 -recursive

Dừ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.

Đối với mã cơ sở hạ tầng được quy định hoặc bảo mật, hãy ưu tiên các công cụ CLI cục bộ và thực thi `terraform fmt -check -recursive` trong CI thay vì gửi tệp đến các trình định dạng trực tuyến.

Ứ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?

Không. Trình định dạng HCL này được hỗ trợ bởi máy chủ: đầu vào của bạn được gửi đến một điểm cuối an toàn để định dạng và HCL kết quả được trả về trình duyệt của bạn. Đối với mã cơ sở hạ tầng cực kỳ nhạy cảm hoặc được quy định, hãy ưu tiên chạy `terraform fmt` (hoặc `packer fmt`) cục bộ.

🛡️Tôi có thể dán thông tin bí mật vào đây không?

Chúng tôi khuyến cáo mạnh mẽ bạn không nên dán các thông tin bí mật sản xuất vào bất kỳ công cụ trực tuyến nào. Mặc dù dịch vụ được bảo mật và thiết kế để xử lý tạm thời, các thông tin xác thực có tuổi thọ dài hoặc cực kỳ nhạy cảm chỉ nên tồn tại trong các tệp cục bộ, kho lưu trữ bí mật hoặc kho CI — không phải trong các công cụ trình duyệt.

🧩Định dạng có thay đổi hành vi cấu hình không?

Không. Trình định dạng tập trung vào bố cục: khoảng trắng, thụt lề và khoảng cách. Các khối tài nguyên, đối số, biểu thức và tham chiếu vẫn giữ nguyên, giả sử HCL ban đầu là hợp lệ.

📄Tôi có thể định dạng tệp .tfvars không?

Có, miễn là tệp .tfvars sử dụng cú pháp HCL. Terraform cũng hỗ trợ các biến dựa trên 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?

`terraform fmt` là trình định dạng chính thức đi kèm với Terraform và lý tưởng cho phát triển cục bộ và CI. Công cụ web này dành cho việc dọn dẹp nhanh, tùy chỉnh khi bạn không có CLI trong tay hoặc muốn sắp xếp một đoạn mã nhỏ trong trình duyệt.

🧯Tại sao định dạng thất bại?

Hầu hết lỗi là do lỗi phân tích cú pháp: dấu ngoặc nhọn hoặc ngoặc vuông chưa đóng, heredocs không đúng định dạng, hoặc trộn lẫn tfvars kiểu 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

CI Tip

Á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.

Best Practice

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ế.

Best Practice

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.

Best Practice

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