Kluczowe Funkcje
- Formatowanie świadome HCL2 dla bloków, atrybutów, list/map i heredoc w stylu Terraform
- Spójne wcięcia i odstępy wokół =, przecinków, nawiasów klamrowych i zagnieżdżonych bloków
- Zachowuje komentarze i celowe puste linie tam, gdzie to możliwe, dla czytelności
- Działa z plikami .tf, .hcl, .tfvars opartymi na HCL i Packer .pkr.hcl
- Wynik idempotentny: ponowne uruchomienie formatowania daje ten sam rezultat
- Minimalna powierzchnia: pojedyncza akcja „Formatuj”, bez ustawień stylu do dyskusji
- Jednoklikowe kopiowanie lub pobieranie sformatowanego wyniku z edytora
- Przetwarzanie obsługiwane przez serwer przez zabezpieczony punkt końcowy — świetne do szybkich poprawek; preferuj lokalne CLI dla wysoce wrażliwego kodu
🔧 Jak Używać Formatowania HCL for hcl-formatter
1. Wklej lub upuść swój kod
Otwórz swój plik HCL/Terraform (.tf, .tfvars oparte na HCL, .hcl, .pkr.hcl itp.) i wklej zawartość do edytora lub upuść plik, jeśli twoja przeglądarka to obsługuje.
2. Kliknij „Formatuj”
Kliknij przycisk Formatuj. Twoja konfiguracja jest wysyłana do bezpiecznego zaplecza, które stosuje reguły stylu terraform fmt do wcięć, odstępów i układu, a następnie zwraca sformatowany HCL2.
3. Przejrzyj, skopiuj lub pobierz
Sprawdź wynik w edytorze, a następnie skopiuj go z powrotem do swojego IDE lub pobierz sformatowany plik i zatwierdź go w swoim repozytorium.
Specyfikacje techniczne
Model wykonania
Formatowanie odbywa się po stronie serwera i ma na celu naśladowanie normalizacji układu w stylu terraform fmt dla HCL2.
| Aspekt | Szczegóły |
|---|---|
| Tryb | Obsługiwany przez serwer (brak WASM w przeglądarce) |
| Zakres | Białe znaki, wcięcia, odstępy, podstawowy układ |
| Przestawianie | Brak semantycznego przestawiania zasobów lub bloków |
| Opcje | Brak — pojedyncza akcja Formatuj dla przewidywalnego wyniku |
| Ograniczenia | Około 1–2 MB wejścia, ~25s limit czasu serwera (podlegające dostosowaniu) |
| Przechowywanie | Przetwarzanie tymczasowe — dane wejściowe są usuwane po sformatowaniu |
Obsługa języków
Rozumie typowe konstrukcje HCL2 używane w Terraform i innych narzędziach HashiCorp.
| Konstrukcja | Przykłady | Uwagi |
|---|---|---|
| Bloki | resource, variable, output, module, locals, job, task | Zachowana struktura zagnieżdżonych bloków |
| Atrybuty | name = "web", count = 2 | Normalizacja odstępów wokół = i między atrybutami |
| Kolekcje | [1, 2, 3], { key = value } | Jednolity układ dla list i map/obiektów |
| Heredocs | <<-EOF ... EOF | Znaczniki zachowane; wcięcie znormalizowane tam, gdzie to możliwe |
| Komentarze | Komentarze w stylu # i // | Zachowywane tam, gdzie to możliwe, aby zachować intencję i dokumentację |
Przed/po w miniaturze
Mały przykład oczyszczenia wcięć i odstępów w zasobie Terraform.
# Przed
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Po
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Błędy i przypadki brzegowe
Jeśli formatowanie nie powiedzie się lub zwróci błąd, zwykle wynika to z problemów z parsowaniem wejścia HCL2.
| Objaw | Prawdopodobna przyczyna | Co sprawdzić |
|---|---|---|
| Brak wyniku / błąd parsowania | Niezamknięty nawias klamrowy, kwadratowy lub okrągły | Policz pasujące pary { }, [ ], ( ) i zamknij wszystkie bloki |
| Problemy z heredoc | Brakujący lub niedopasowany terminator | Upewnij się, że znaczniki takie jak EOF pojawiają się dokładnie i w osobnej linii |
| Mieszane style | Tabulacje/spacje lub zbłąkane znaki | Znormalizuj wcięcie, usuń zbłąkane znaki kontrolne |
| Zamieszanie z .tfvars | Składnia JSON vs HCL | Użyj formatowania JSON lub terraform fmt dla plików *.tfvars.json |
Alternatywy wiersza poleceń
W codziennych przepływach pracy Infrastructure as Code używaj oficjalnych formaterek lokalnie i w CI, a to narzędzie online zachowaj do szybkich, doraźnych porządków.
macOS / Linux
Terraform: formatowanie w miejscu
terraform fmtPrzepisuje pliki .tf i oparte na HCL .tfvars w bieżącym katalogu.
Terraform: rekurencyjne sprawdzenie w CI (bez zapisu)
terraform fmt -check -recursiveKończy działanie z kodem niezerowym, jeśli jakikolwiek plik wymaga formatowania — idealne do CI i haków pre-commit.
Packer: formatowanie szablonu
packer fmt ścieżka/do/szablonu.pkr.hclFormatuje określony plik HCL Packer w miejscu.
Windows (PowerShell)
Sformatuj rekurencyjnie wszystkie pliki Terraform
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Uruchamia terraform fmt na każdym znalezionym pliku .tf w bieżącym katalogu.
Sprawdzenie formatowania w stylu CI
terraform fmt -check -recursiveUżywaj w potokach budowania, aby zakończyć się niepowodzeniem, gdy formatowanie jest nieaktualne.
GitHub Actions
Zakończ budowę niepowodzeniem, jeśli wymagane jest formatowanie
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveZatrzymuje workflow, gdy jakikolwiek plik Terraform nie jest poprawnie sformatowany.
Automatyczne formatowanie w pull requestach (opcjonalne)
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)Stosuje terraform fmt i wypycha commit tylko z formatowaniem z powrotem do gałęzi.
Praktyczne Zastosowania
Higiena PR i Przeglądy
Normalizuj odstępy i wcięcia, aby recenzenci mogli skupić się na rzeczywistych zmianach infrastruktury.
- Uruchom formatowanie przed otwarciem pull request
- Zmniejsz drobiazgowe komentarze dotyczące stylu w przeglądach Terraform
- Utrzymuj git diffs małe i znaczące
Rozwój Modułów Terraform
Utrzymuj spójność modułów między zespołami, repozytoriami i rejestrami.
- Wyrównaj bloki zmiennych i wyjść w udostępnionych modułach
- Zapewnij, że przykładowe konfiguracje pasują do jednego stylu domowego
Kontrola w CI
Używaj sprawdzeń terraform fmt w CI, aby zapobiec dryfowi stylu w czasie.
- Dodaj `terraform fmt -check -recursive` jako obowiązkowy krok potoku
- Blokuj merges, dopóki wszystkie pliki .tf nie są sformatowane
Wprowadzenie i Dokumentacja
Czytelne przykłady pomagają nowym członkom zespołu szybko nauczyć się zarówno Terraform, jak i stylu domowego.
- Publikuj spójnie sformatowane fragmenty w README
- Używaj czystych przykładów w wewnętrznych sesjach szkoleniowych Terraform
❓ Frequently Asked Questions
🔒Czy mój kod jest przetwarzany lokalnie?
🛡️Czy mogę tutaj wklejać sekrety?
🧩Czy formatowanie zmienia zachowanie konfiguracji?
📄Czy mogę formatować pliki .tfvars?
JSON przez `.tfvars.json`; te podlegają zasadom JSON i lepiej jest je formatować za pomocą narzędzia do formatowania JSON lub samego `terraform fmt`.⚙️Czym to się różni od `terraform fmt`?
🧯Dlaczego formatowanie się nie powiodło?
JSON z składnią HCL. Napraw problem strukturalny (lub użyj odpowiedniego dialektu/formatera) i spróbuj ponownie.Pro Tips
Wymuś `terraform fmt -check -recursive` w CI, aby zapobiec dryfowi formatowania w dużych repozytoriach infrastruktury.
Unikaj wklejania sekretów lub danych związanych ze stanem do narzędzi online; utrzymuj przykłady konfiguracji oczyszczone i uruchamiaj lokalne programy formatujące CLI dla rzeczywistego kodu infrastruktury.
Normalizuj końcowe znaki nowej linii i wcięcia w edytorze, aby pliki Terraform generowały czyste, stabilne różnice między platformami.
Dodaj hak pre-commit, który uruchamia `terraform fmt`, aby pull requesty przychodziły już sformatowane, a rozmowy recenzji mogły skupić się na architekturze i ryzyku.
Additional Resources
Other Tools
- Upiększacz CSS
- Upiększacz HTML
- Upiększacz JavaScript
- Upiększacz PHP
- Wybór koloru
- Ekstraktor sprite'ów
- Dekoder Base64
- Koder Base64
- Formatowanie C#
- Formatowanie CSV
- Dockerfile Formatter
- Formatowanie Elm
- Formatowanie ENV
- Formatowanie Go
- Formatowanie GraphQL
- Formatowanie INI
- Formatowanie JSON
- Formatowanie LaTeX
- Formatowanie Markdown
- Formatowanie Objective-C
- Php Formatter
- Formatowanie Proto
- Formatowanie Python
- Formatowanie Ruby
- Formatowanie Rust
- Formatowanie Scala
- Formatowanie skryptów powłoki
- Formatowanie SQL
- Formatowanie SVG
- Formatowanie Swift
- Formatowanie TOML
- Typescript Formatter
- Formatowanie XML
- Formatowanie YAML
- Formatowanie Yarn
- Minifikator CSS
- Html Minifier
- Javascript Minifier
- Minifikator JSON
- Minifikator XML
- Przegląd nagłówków HTTP
- PDF do tekstu
- Tester wyrażeń regularnych
- Sprawdzanie pozycji w SERP
- Wyszukiwanie Whois