Конфигурация
TerraCi настраивается через YAML-файл .terraci.yaml в корне проекта.
Файл конфигурации
TerraCi ищет конфигурацию в следующих местах (по порядку):
.terraci.yaml.terraci.ymlterraci.yamlterraci.yml
Или укажите путь вручную:
terraci -c /path/to/config.yaml generateБыстрый старт
Создайте конфигурацию командой:
terraci initЭта команда запускает интерактивный TUI-мастер, который проведёт вас через выбор провайдера, бинарного файла и настройку структуры директорий. Используйте terraci init --ci для неинтерактивного режима.
Полный пример
# Опциональная сервисная директория (по умолчанию .terraci) для рантайм-артефактов и отчётов
service_dir: .terraci
# Структура директорий
structure:
pattern: "{service}/{environment}/{region}/{module}"
# Фильтры модулей
exclude:
- "*/test/*"
- "*/sandbox/*"
- "*/.terraform/*"
include: [] # Пустой означает все (после исключений)
# Общие настройки выполнения Terraform/OpenTofu
execution:
binary: terraform # или "tofu"
init_enabled: true # автоматически вызывать terraform init
parallelism: 4 # размер пула воркеров для local-exec
# Настройки расширений
extensions:
# Настройки GitLab CI
gitlab:
image:
name: hashicorp/terraform:1.6
stages_prefix: "deploy"
variables:
TF_IN_AUTOMATION: "true"
TF_INPUT: "false"
# Настройки по умолчанию для всех джобов
job_defaults:
tags:
- terraform
- docker
before_script:
- aws sts get-caller-identity
artifacts:
paths:
- "*.tfplan"
expire_in: "1 day"
# Настройки GitHub Actions
# github:
# runs_on: "ubuntu-latest"
# permissions:
# contents: read
# pull-requests: writeСекции конфигурации
| Секция | Описание |
|---|---|
| structure | Структура директорий и обнаружение модулей |
| gitlab | Настройки GitLab CI пайплайнов |
| github | Настройки GitHub Actions пайплайнов |
| filters | Паттерны include/exclude |
| policy | Конфигурация OPA-политик |
| cost | Оценка стоимости AWS-инфраструктуры |
| summary | Настройки сводного комментария MR/PR |
| tfupdate | Разрешение зависимостей Terraform и синхронизация lock-файлов |
Значения по умолчанию
Если файл конфигурации не найден, используются эти значения:
service_dir: .terraci
structure:
pattern: "{service}/{environment}/{region}/{module}"
execution:
binary: terraform
init_enabled: true
parallelism: 4Выбор провайдера в рантайме:
- Переменная
TERRACI_PROVIDER— явный override - Автоопределение CI (
GITLAB_CI,GITHUB_ACTIONS) - Единственный сконфигурированный провайдер
Дефолты плагинов GitLab/GitHub (если они активированы) приходят из struct-тегов — см. gitlab и github.
Валидация
Проверьте конфигурацию:
terraci validateПроверяется:
- Наличие обязательных полей
- Парсинг паттерна
- Указание образа
Переменные окружения
Переменные окружения можно использовать в конфигурации CI:
extensions:
gitlab:
variables:
AWS_REGION: "${AWS_REGION}" # Из окружения CIYAML-якоря
Используйте YAML-якоря для повторяющихся значений:
defaults: &defaults
tags:
- terraform
- docker
before_script:
- aws sts get-caller-identity
extensions:
gitlab:
image: "hashicorp/terraform:1.6"
job_defaults:
<<: *defaultsOpenTofu с минимальными образами
Для минимальных образов OpenTofu с не-shell entrypoint используйте объектный формат и переключите бинарь выполнения:
execution:
binary: tofu
extensions:
gitlab:
image:
name: "ghcr.io/opentofu/opentofu:1.9-minimal"
entrypoint: [""]