Ключові можливості
- Форматування з підтримкою HCL2 для блоків у стилі Terraform, атрибутів, списків/мап та heredoc
- Послідовні відступи та пробіли навколо =, ком, фігурних дужок та вкладених блоків
- Зберігає коментарі та навмисні порожні рядки, де це можливо, для зручності читання
- Працює з файлами .tf, .hcl, .tfvars на основі HCL та Packer .pkr.hcl
- Ідемпотентний вивід: повторний запуск форматувальника дає той самий результат
- Мінімальна складність: одна дія «Форматувати», без налаштувань стилю для суперечок
- Одно-клікове копіювання або завантаження відформатованого результату з редактора
- Обробка через захищений ендпоінт — чудово для швидких виправлень; для дуже конфіденційного коду краще використовувати локальний CLI
🔧 Як використовувати форматувальник HCL for hcl-formatter
1. Вставте або перетягніть ваш код
Відкрийте ваш HCL/Terraform файл (.tf, HCL-based .tfvars, .hcl, .pkr.hcl тощо) і вставте вміст у редактор, або перетягніть файл, якщо ваш браузер підтримує це.
2. Натисніть «Форматувати»
Натисніть кнопку Форматувати. Ваша конфігурація надсилається на захищений серверний компонент, який застосовує правила форматування terraform fmt до відступів, пробілів та розташування, а потім повертає відформатований HCL2.
3. Перегляньте, скопіюйте або завантажте
Перевірте результат у редакторі, потім скопіюйте його назад у ваше IDE або завантажте відформатований файл і закомітьте його у ваш репозиторій.
Технічні характеристики
Модель виконання
Форматер працює на сервері та розроблений для імітації нормалізації розташування у стилі terraform fmt для HCL2.
| Аспект | Деталі |
|---|---|
| Режим | Серверний (без WASM у браузері) |
| Область застосування | Пробіли, відступи, інтервали, базове розташування |
| Переупорядкування | Без семантичного переупорядкування ресурсів або блоків |
| Опції | Відсутні — єдина дія Форматування для передбачуваного результату |
| Обмеження | Приблизно 1–2 МБ вхідних даних, ~25с таймаут сервера (може змінюватися) |
| Зберігання | Тимчасова обробка — вхідні дані видаляються після форматування |
Покриття мови
Розуміє поширені конструкції HCL2, що використовуються в Terraform та інших інструментах HashiCorp.
| Конструкція | Приклади | Примітки |
|---|---|---|
| Блоки | resource, variable, output, module, locals, job, task | Структура вкладених блоків зберігається |
| Атрибути | name = "web", count = 2 | Пробіли нормалізовані навколо = та між атрибутами |
| Колекції | [1, 2, 3], { key = value } | Уніфіковане розташування для списків та карт/об'єктів |
| Heredocs | <<-EOF ... EOF | Маркери збережено; відступи нормалізовано там, де це можливо |
| Коментарі | Коментарі у стилі # та // | Зберігаються там, де це можливо, для збереження наміру та документації |
Міні До/Після
Невеликий приклад очищення відступів та пробілів у ресурсі Terraform.
# До
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# Після
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
Помилки та Граничні Випадки
Якщо форматування не вдається або повертає помилку, це зазвичай пов'язано з проблемами парсингу вхідних даних HCL2.
| Симптом | Ймовірна причина | Що перевірити |
|---|---|---|
| Немає виводу / помилка парсингу | Незакрита фігурна дужка, квадратна дужка або дужка | Порахуйте відповідні пари { }, [ ], ( ) та закрийте всі блоки |
| Проблеми з Heredoc | Відсутній або невідповідний термінатор | Переконайтеся, що маркери на кшталт EOF з'являються точно та на окремому рядку |
| Змішані стилі | Табуляції/пробіли або зайві символи | Нормалізуйте відступи, видаліть зайві керівні символи |
| Плутанина з .tfvars | Синтаксис JSON проти HCL | Використовуйте форматер JSON або terraform fmt для файлів *.tfvars.json |
Альтернативи Командного Рядка
Для щоденних робочих процесів Інфраструктури як Код використовуйте офіційні форматери локально та в CI, а цей онлайн-інструмент зберігайте для швидких ад-хок очищень.
macOS / Linux
Terraform: форматування на місці
terraform fmtПереписує .tf та HCL-базовані .tfvars файли в поточному каталозі.
Terraform: рекурсивна перевірка CI (без запису)
terraform fmt -check -recursiveЗавершується ненульовим кодом, якщо будь-який файл потребує форматування — ідеально для CI та pre-commit хуків.
Packer: форматування шаблону
packer fmt path/to/template.pkr.hclФорматує вказаний HCL файл Packer на місці.
Windows (PowerShell)
Форматувати всі файли Terraform рекурсивно
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }Запускає terraform fmt для кожного знайденого файлу .tf у поточному каталозі.
Перевірка форматування у стилі CI
terraform fmt -check -recursiveВикористовуйте в пайплайнах збірки для провалу, коли форматування застаріло.
GitHub Actions
Провалити збірку, якщо потрібне форматування
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveЗупиняє workflow, коли будь-який файл Terraform не відформатовано належним чином.
Автоформатування в pull requests (опціонально)
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)Застосовує terraform fmt і відправляє коміт лише з форматуванням назад у гілку.
Практичне Застосування
Гігієна PR та Рев'ю
Уніфікуйте пробіли та відступи, щоб рецензенти могли зосередитись на реальних змінах інфраструктури.
- Запустіть форматування перед відкриттям pull request
- Зменшіть дріб'язкові коментарі щодо стилю в рев'ю Terraform
- Зберігайте git diff невеликими та змістовними
Розробка Модулів Terraform
Підтримуйте узгодженість модулів між командами, репозиторіями та реєстрами.
- Вирівняйте блоки змінних та виводу в спільних модулях
- Забезпечте відповідність прикладів конфігурацій єдиному стилю
Контроль у CI
Використовуйте перевірки terraform fmt в CI для запобігання дрейфу стилю з часом.
- Додайте `terraform fmt -check -recursive` як обов'язковий крок пайплайну
- Блокуйте злиття, доки всі файли .tf не відформатовано
Онбординг та Документація
Читабельні приклади допомагають новим членам команди швидко вивчити як Terraform, так і стиль компанії.
- Публікуйте узгоджені фрагменти в README
- Використовуйте чисті приклади у внутрішніх тренінгах з Terraform
❓ Frequently Asked Questions
🔒Мій код обробляється локально?
🛡️Чи можна вставляти секрети сюди?
🧩Чи змінює форматування поведінку конфігурації?
📄Чи можна форматувати .tfvars файли?
JSON через `.tfvars.json`; вони слідують правилам JSON і краще обробляються JSON-форматувальником або самим `terraform fmt`.⚙️Чим це відрізняється від `terraform fmt`?
🧯Чому форматування не вдалося?
JSON з синтаксисом HCL. Виправте структурну проблему (або використовуйте правильний діалект/форматувальник) і спробуйте ще раз.Pro Tips
Застосовуйте `terraform fmt -check -recursive` у CI, щоб запобігти розбіжностям у форматуванні у великих репозиторіях інфраструктури.
Уникайте вставки секретів або даних, пов'язаних із станом, в онлайн-інструменти; зберігайте приклади конфігурацій очищеними та використовуйте локальні CLI-форматувальники для реального коду інфраструктури.
Нормалізуйте кінцеві нові рядки та відступи у вашому редакторі, щоб файли Terraform створювали чисті, стабільні диффи на різних платформах.
Додайте pre-commit хук, який запускає `terraform fmt`, щоб pull requests надходили вже відформатованими, а обговорення рецензій могли зосередитися на архітектурі та ризиках.
Additional Resources
Other Tools
- Прикрашувач CSS
- Прикрашувач HTML
- Прикрашувач JavaScript
- Прикрашувач PHP
- Вибір кольору
- Екстрактор спрайтів
- Декодер Base64
- Кодувальник Base64
- Форматувальник C#
- Форматувальник CSV
- Dockerfile Formatter
- Форматувальник Elm
- Форматувальник ENV
- Форматувальник Go
- Форматувальник GraphQL
- Форматувальник INI
- Форматувальник JSON
- Форматувальник LaTeX
- Форматувальник Markdown
- Форматувальник Objective-C
- Php Formatter
- Форматувальник Proto
- Форматувальник Python
- Форматувальник Ruby
- Форматувальник Rust
- Форматувальник Scala
- Форматувальник shell-скриптів
- Форматувальник SQL
- Форматер SVG
- Форматер Swift
- Форматер TOML
- Typescript Formatter
- Форматер XML
- Форматер YAML
- Форматер Yarn
- Мініфікатор CSS
- Html Minifier
- Javascript Minifier
- Мініфікатор JSON
- Мініфікатор XML
- Переглядач HTTP-заголовків
- PDF у текст
- Тестер регулярних виразів
- Перевірка позицій у SERP
- Пошук Whois