terraform validate

Тема дорожной карты · Terraform

terraform validate — это встроенная команда Terraform CLI, проверяющая HCL-конфигурационные файлы на синтаксические ошибки, несоответствия типов, неопределённые переменные и недопустимые ссылки на атрибуты ресурсов без выполнения API-вызовов или наличия облачных учётных данных. Она выполняется после того, как terraform init загрузил провайдеры и модули, что позволяет проверять существование атрибутов схемы ресурсов и их корректный тип согласно схеме провайдера. terraform validate — это самый быстрый и дешёвый gate качества IaC: выполняется за секунды и должен быть первой проверкой в каждом CI-конвейере до tflint, Checkov или terraform plan. В отличие от terraform plan, terraform validate не оценивает динамические значения и не проверяет существование ссылочных ресурсов в state-файле remote-бэкенда, поэтому лучше использовать её как синтаксический и схемный guard, а не как полную проверку корректности.

Как это работает

terraform validate для Terraform: статические проверки (terraform validate, tflint, tfsec, checkov), unit-тесты (моки провайдеров через tftest или tflint), integration-тесты (terratest — на Go, деплоит в реальное облако, ассертит), policy-as-code (OPA, Sentinel, conftest). Новее: нативный terraform test framework (1.6+) даёт unit-test-like workflow внутри Terraform через *.tftest.hcl-файлы.

Когда применять

terraform validate, tflint, tfsec — в CI на каждый PR; быстрые, ловят опечатки + очевидные security-проблемы. terratest — для критичных модулей (тех, что в prod); медленный, но реальный. Принимайте terraform test после перехода на 1.6+. Policy-as-code — для enforce "no public S3", "all RDS encrypted" и пр.

Типичные ошибки

Ловушки terraform validate: пропуск тестов "Terraform же это просто конфиг" (это код, уничтожающий реальную инфру на опечатке); flake terratest из-за rate-лимитов облака + сбоев cleanup (всегда defer cleanup); policy-checks игнорируются разработчиками ("просто merge" без фикса) — делайте их required CI-гейтами.

Связанные понятия

Полезные ресурсы