terraform-test
terraform-test — официальный навык HashiCorp для встроенного тестового фреймворка Terraform. Он предназначен для случаев, когда нужно описать проверку в файле .tftest.hcl или .tftest.json, запустить отдельные сценарии и убедиться, что изменение конфигурации не ломает ожидаемое поведение. Источник разделяет два режима: plan проверяет логику без создания реальных ресурсов, а apply выполняет сценарий с настоящей инфраструктурой. Поэтому карточка подходит и для быстрых проверок конфигурации, и для интеграционных прогонов, но выбор режима нужно делать осознанно. Основной элемент файла — run-блок. В нём можно выбрать command = plan или apply, передать переменные, подключить provider, сослаться на локальный либо registry-модуль, задать state_key и описать один или несколько assert-блоков. Assert проверяет условие Terraform и возвращает понятное сообщение об ошибке; источник показывает проверки выходных значений, количества ресурсов, формата идентификатора и поведения при отключённой опции. Для ожидаемых отказов предусмотрен expect_failures, когда тест считается успешным именно при подтверждённом сбое указанной переменной или другого адресата. Файл может содержать общие test-настройки и variables. Параметр parallel включается для параллельных run-блоков, если это соответствует изоляции конкретного сценария. Варианты plan_options позволяют описать refresh-only, normal, replace и target; их следует применять только когда целевая проверка действительно требует такого поведения. Зависимости между сценариями оформляются через run.<имя>.значение: один run может подготовить состояние или output, а следующий использует результат. Такой способ делает последовательность явной и помогает отделить подготовительный сценарий от проверки. Mock provider и mock data source позволяют симулировать ответы без создания инфраструктуры; исходник отдельно отмечает, что mock providers доступны начиная с Terraform 1.7.0. Для обычных модулей удобно держать быстрые plan-тесты в файлах с суффиксом _unit_test.tftest.hcl, а проверки, создающие ресурсы, — в _integration_test.tftest.hcl. В репозитории навыка есть отдельные материалы по mock-синтаксису, CI/CD и полному примеру набора тестов, поэтому при нестандартной задаче сначала выбирают соответствующую reference-инструкцию. Практический сценарий начинается с определения контракта модуля: какие variables должны быть заданы, какие outputs проверяются и допустимо ли создание ресурсов. Затем пишется минимальный run с assertion, после чего добавляются случаи по условным ресурсам, значениям по умолчанию, expected failures или зависимым сценариям. Навык не обещает, что сам тест докажет безопасность инфраструктуры или полноту покрытия: apply-тесты требуют реальных провайдеров и ресурсов, а plan и mocks проверяют только смоделированный или планируемый путь. Результаты всё равно нужно сверять с состоянием проекта, версиями Terraform и правилами CI.
Для чего подходит
- Создание .tftest.hcl файлов
- Проверка Terraform plan и apply сценариев
- Тестирование с assertions и mock providers
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/hashicorp/agent-skills/tree/main/plugins/terraform/skills/terraform-test