Terraform удобно масштабирует инфраструктуру, но вместе со скоростью растёт цена ошибки: опечатка в ресурсе, небезопасная настройка S3, открытый Security Group или устаревший провайдер. Чтобы ловить проблемы до `terraform apply`, в CI/CD обычно подключают TFLint и tfsec.
Что делает TFLint
Это линтер для Terraform-кода. Он проверяет:
- синтаксические и логические ошибки
- неиспользуемые переменные и outputs
- некорректные типы ресурсов и аргументов
- best practices для AWS, Azure, GCP через плагины
- соответствие внутренним правилам команды
По сути, TFLint отвечает за качество и валидность конфигурации. Пример пользы: если указан несуществующий instance type или устаревший атрибут провайдера, линтер покажет это ещё до запуска инфраструктуры. ✅
Что делает tfsec
Это инструмент для анализа безопасности Terraform. Он ищет:
- публично доступные бакеты и базы данных
- открытые порты `0.0.0.0/0`
- отключённое шифрование дисков и storage
- отсутствие логирования и версионирования
- слабые IAM-политики
- другие misconfiguration-риски
tfsec фокусируется не на стиле, а на security posture. Например, он предупредит, если S3 bucket создаётся без шифрования или если в Security Group открыт SSH для всего интернета. 🚨
Чем отличаются TFLint и tfsec
- TFLint — качество, корректность, best practices
- tfsec — безопасность конфигурации
- вместе они дают более надёжный pre-deploy контроль
Это не конкуренты, а связка. Один инструмент не заменяет другой. ⚙️
Как встроить в процесс
Оптимальная схема:
- локальный запуск перед коммитом
- проверка в GitHub Actions / GitLab CI / Jenkins
- блокировка merge при критичных ошибках
- единые конфиги и baseline для команды
Пример типового пайплайна:
- `terraform fmt -check`
- `terraform validate`
- `tflint`
- `tfsec`
- `terraform plan`
Так команда ловит и технические ошибки, и security-проблемы ещё до выката. 📦
Почему это важно
Ошибки в IaC — это уже не просто “битый код”, а реальные риски:
- простой сервисов
- лишние расходы в облаке
- утечки данных
- нарушение compliance-требований
Поэтому проверка Terraform должна включать не только `validate`, но и отдельные инструменты для linting и security scanning. TFLint + tfsec — один из самых практичных и быстрых способов повысить качество инфраструктурного кода. 🚀
Подборку полезных каналов про IT стоит посмотреть в закрепе — там много практики, инструментов и кейсов для инженеров.