terraci init
Инициализация конфигурационного файла TerraCi.
Синтаксис
bash
terraci init [flags]Описание
Команда init создаёт файл .terraci.yaml с разумными значениями по умолчанию.
Флаги
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
--force | bool | false | Перезаписать существующий файл |
Примеры
Базовая инициализация
bash
terraci initСоздаёт .terraci.yaml:
yaml
structure:
pattern: "{service}/{environment}/{region}/{module}"
min_depth: 4
max_depth: 5
allow_submodules: true
exclude:
- "*/test/*"
- "*/sandbox/*"
gitlab:
terraform_binary: "terraform"
terraform_image: "hashicorp/terraform:1.6"
stages_prefix: "deploy"
parallelism: 5
plan_enabled: true
auto_approve: false
before_script:
- ${TERRAFORM_BINARY} init
tags:
- terraform
- docker
variables:
TF_IN_AUTOMATION: "true"
TF_INPUT: "false"
artifact_paths:
- "*.tfplan"
backend:
type: s3
key_pattern: "{service}/{environment}/{region}/{module}/terraform.tfstate"Перезапись существующего
bash
terraci init --forceПерезаписывает .terraci.yaml без запроса подтверждения.
Инициализация в другой директории
bash
terraci -d /path/to/project initСоздаёт конфигурацию в указанной директории.
Что создаётся
Команда создаёт:
.terraci.yamlв текущей (или указанной) директории
Команда НЕ изменяет:
- Существующие Terraform-файлы
- Конфигурацию GitLab CI
- Другие файлы проекта
После инициализации
Проверьте конфигурацию
bashcat .terraci.yamlНастройте под свой проект
- Измените паттерн под вашу структуру
- Обновите Docker-образ
- Добавьте исключения
- Настройте backend
Валидация
bashterraci validateСгенерируйте первый пайплайн
bashterraci generate --dry-run terraci generate -o .gitlab-ci.yml
Шаблоны конфигураций
OpenTofu
После init измените для OpenTofu:
yaml
gitlab:
terraform_binary: "tofu"
terraform_image: "ghcr.io/opentofu/opentofu:1.6"GCS Backend
yaml
backend:
type: gcs
bucket: my-terraform-state
key_pattern: "{service}/{environment}/{region}/{module}/terraform.tfstate"Простая структура
yaml
structure:
pattern: "{environment}/{region}/{module}"
min_depth: 3
max_depth: 3
allow_submodules: falseProduction-ready
yaml
structure:
pattern: "{service}/{environment}/{region}/{module}"
min_depth: 4
max_depth: 5
allow_submodules: true
exclude:
- "*/test/*"
- "*/sandbox/*"
- "*/dev/*"
gitlab:
terraform_binary: "terraform"
terraform_image: "hashicorp/terraform:1.6"
stages_prefix: "deploy"
parallelism: 3
plan_enabled: true
auto_approve: false
before_script:
- ${TERRAFORM_BINARY} init -backend-config="bucket=${TF_STATE_BUCKET}"
tags:
- terraform
- production
variables:
TF_IN_AUTOMATION: "true"
TF_INPUT: "false"
TF_CLI_ARGS_plan: "-parallelism=30"
TF_CLI_ARGS_apply: "-parallelism=30"
artifact_paths:
- "*.tfplan"
backend:
type: s3
bucket: company-terraform-state
region: eu-central-1
key_pattern: "{service}/{environment}/{region}/{module}/terraform.tfstate"Устранение проблем
Файл уже существует
Error: .terraci.yaml already exists. Use --force to overwrite.Решение: Используйте --force или вручную отредактируйте существующий файл.
Нет прав на запись
Error: permission denied: .terraci.yamlРешение: Проверьте права на директорию и файл.
Рекомендации
- Начните с дефолтов — init создаёт разумные значения
- Проверьте структуру — убедитесь, что паттерн соответствует вашему проекту
- Добавьте в git —
.terraci.yamlдолжен быть в репозитории - Настройте CI сначала — проверьте
--dry-runперед деплоем