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