terraci validate
Валидация проекта и конфигурации TerraCi.
Синтаксис
bash
terraci validate [flags]Описание
Команда validate проверяет:
- Корректность конфигурации
.terraci.yaml - Обнаружение Terraform-модулей
- Парсинг HCL-файлов
- Разрешение зависимостей
- Отсутствие циклических зависимостей
Флаги
| Флаг | Сокр. | Тип | По умолчанию | Описание |
|---|---|---|---|---|
--verbose | -v | bool | false | Подробный вывод |
--exclude | -x | []string | Паттерны исключения | |
--include | -i | []string | Паттерны включения | |
--filter | -f | []string | Фильтр по сегменту (key=value) |
Примеры
Базовая валидация
bash
terraci validateУспешный вывод:
✓ Found 12 modules
✓ Built dependency graph with 15 edges
✓ No circular dependencies detected
✓ 4 execution levels identified
Validation passedПодробный вывод
bash
terraci validate --verboseВывод:
Configuration:
Pattern: {service}/{environment}/{region}/{module}
Min depth: 4
Max depth: 5
Discovered modules:
- platform/production/us-east-1/vpc
- platform/production/us-east-1/eks
- platform/production/us-east-1/rds
- platform/production/us-east-1/app
...
Dependency graph:
eks → vpc
rds → vpc
app → eks
app → rds
Execution levels:
Level 0: [vpc]
Level 1: [eks, rds]
Level 2: [app]
✓ Validation passedВалидация с конфигом
bash
terraci validate -c production.terraci.yamlВалидация директории
bash
terraci validate -d /path/to/terraformПроверки
Конфигурация
structure.patternуказанgitlab.imageуказан
Модули
- Директории содержат
.tfфайлы - Модули соответствуют паттерну структуры
HCL
- Синтаксис
.tfфайлов корректен - Блоки
terraform_remote_stateпарсятся - Переменные в путях разрешаются
Зависимости
- Все ссылки на remote_state разрешаются
- Нет циклических зависимостей
- Граф зависимостей корректен
Сообщения об ошибках
Ошибка конфигурации
Error: structure.pattern is requiredРешение: Добавьте pattern в .terraci.yaml:
yaml
structure:
pattern: "{service}/{environment}/{region}/{module}"Модули не найдены
Warning: No modules discoveredВозможные причины:
- Глубина директорий не соответствует паттерну
- Нет
.tfфайлов - Все модули исключены фильтрами
Ошибка парсинга HCL
Error: Failed to parse platform/prod/eu-central-1/vpc/main.tf: ...Решение: Проверьте синтаксис указанного файла.
Неразрешённая зависимость
Warning: Unresolved dependency in platform/prod/eu-central-1/eks:
data.terraform_remote_state.unknown_moduleМодуль ссылается на несуществующий remote_state.
Циклическая зависимость
Error: Circular dependency detected:
module-a -> module-b -> module-c -> module-aРешение: Устраните циклическую зависимость в Terraform-коде.
Использование в CI
yaml
validate:
stage: test
script:
- terraci validate
rules:
- changes:
- "**/*.tf"
- ".terraci.yaml"Коды возврата
| Код | Описание |
|---|---|
0 | Валидация успешна |
1 | Ошибка валидации |
2 | Ошибка конфигурации |
Рекомендации
Pre-commit hook
bash
#!/bin/sh
# .git/hooks/pre-commit
terraci validate || exit 1Makefile
makefile
.PHONY: validate
validate:
terraci validate --verboseCI pipeline
yaml
stages:
- validate
- generate
- deploy
validate:
stage: validate
script:
- terraci validate
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
generate:
stage: generate
needs: [validate]
script:
- terraci generate -o pipeline.ymlСмотрите также
- Структура проекта — руководство по организации Terraform-проекта
- Обзор конфигурации — справочник конфигурации .terraci.yaml