Обновление зависимостей
TerraCi умеет проверять доступные обновления для провайдеров и модулей Terraform, используя Terraform Registry API. Поддерживается как режим отчёта (только чтение), так и режим записи с обновлением .tf файлов и синхронизацией .terraform.lock.hcl.
Базовая конфигурация
plugins:
tfupdate:
enabled: true
policy:
bump: minorПараметры конфигурации
enabled
Включение или отключение плагина обновлений.
plugins:
tfupdate:
enabled: true # по умолчанию: falseПлагин использует политику EnabledExplicitly — он должен быть явно включён через enabled: true.
target
Определяет, что проверять: провайдеры, модули или всё.
plugins:
tfupdate:
target: all # по умолчанию: all| Значение | Описание |
|---|---|
all | Проверять и провайдеры, и модули (по умолчанию) |
providers | Проверять только провайдеры |
modules | Проверять только модули |
policy.bump
Уровень версионирования для определения «доступных» обновлений.
plugins:
tfupdate:
policy:
bump: minor # обязательный параметр| Значение | Описание |
|---|---|
patch | Учитывать только patch-обновления |
minor | Учитывать minor и patch-обновления |
major | Учитывать major, minor и patch-обновления |
policy.pin
Фиксация обновлённых ограничений до точной версии при записи.
plugins:
tfupdate:
policy:
bump: minor
pin: false # по умолчанию: falseПри true ограничения типа ~> 5.80 заменяются на 5.80.0 при записи.
ignore
Список провайдеров или модулей, которые следует исключить из проверки. Значения должны совпадать с полем source в блоках required_providers или module.
plugins:
tfupdate:
ignore:
- registry.terraform.io/hashicorp/null
- registry.terraform.io/hashicorp/random
- registry.terraform.io/hashicorp/timetimeout
Общий таймаут для запуска. По умолчанию 5 минут для чтения, 20 минут для записи.
plugins:
tfupdate:
timeout: "15m"registries
Настройка хостов реестров для поиска провайдеров.
plugins:
tfupdate:
registries:
default: registry.terraform.io # по умолчанию
providers:
hashicorp/aws: custom-registry.example.com| Поле | Описание |
|---|---|
default | Хост реестра по умолчанию |
providers | Переопределение хоста для конкретных провайдеров |
lock
Настройка синхронизации lock-файлов.
plugins:
tfupdate:
lock:
platforms:
- linux_amd64
- darwin_arm64| Поле | Описание |
|---|---|
platforms | Набор платформ для h1-хешей в .terraform.lock.hcl. Пусто — все платформы. |
cache
Настройка кеширования метаданных реестра и артефактов провайдеров.
plugins:
tfupdate:
cache:
metadata:
backend: inmemcache
ttl: "6h"
namespace: tfupdate/registry
artifacts:
backend: diskblob
namespace: tfupdate/providerspipeline
Добавляет джоб tfupdate-check в начало сгенерированного CI пайплайна.
plugins:
tfupdate:
pipeline: false # по умолчанию: falseПри pipeline: true джоб добавляется с allow_failure: true, поэтому доступные обновления не блокируют деплой.
Полный пример конфигурации
plugins:
tfupdate:
enabled: true
target: all
policy:
bump: minor
pin: false
ignore:
- registry.terraform.io/hashicorp/null
- registry.terraform.io/hashicorp/random
registries:
default: registry.terraform.io
lock:
platforms:
- linux_amd64
- darwin_arm64
cache:
metadata:
backend: inmemcache
ttl: "6h"
artifacts:
backend: diskblob
pipeline: true
timeout: "15m"Как это работает
- TerraCi обнаруживает Terraform-модули в проекте согласно
structure.pattern - Для каждого модуля считываются блоки
required_providers,moduleи.terraform.lock.hcl - Планировщик/решатель находит совместимые версии с учётом транзитивных зависимостей провайдеров из модулей
- Для каждой зависимости выполняется запрос к Terraform Registry API
- Результаты кешируются для снижения нагрузки на API
- Сравниваются текущие ограничения версий с доступными обновлениями согласно уровню
bump - При
--writeобновляются.tfфайлы и синхронизируются.terraform.lock.hcl
Синхронизация lock-файлов
При использовании --write TerraCi автоматически обновляет .terraform.lock.hcl:
- Записи провайдеров создаются или обновляются с новой версией
zh:хеши собираются из метаданных реестра для всех платформh1:хеши вычисляются путём загрузки архивов для настроенных платформ- Существующие хеши сохраняются и объединяются с новыми
Интеграция с CI пайплайном
При pipeline: true в сгенерированный пайплайн добавляется джоб:
GitLab CI:
stages:
- dependency-check
- deploy-plan-0
- deploy-apply-0
tfupdate-check:
stage: dependency-check
script:
- terraci tfupdate
artifacts:
paths:
- .terraci/tfupdate-results.json
allow_failure: trueGitHub Actions:
jobs:
tfupdate-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: terraci tfupdate
continue-on-error: trueCLI команда
# Проверить все зависимости
terraci tfupdate
# Проверить только провайдеры
terraci tfupdate --target providers
# Записать обновлённые версии и синхронизировать lock-файлы
terraci tfupdate --write
# Фиксировать точные версии
terraci tfupdate --write --pin
# Проверить конкретный модуль
terraci tfupdate --module platform/prod/eu-central-1/vpc
# JSON вывод
terraci tfupdate --output jsonПримечание: требуется
plugins.tfupdate.enabled: trueв.terraci.yaml.
Артефакты
| Файл | Описание |
|---|---|
tfupdate-results.json | Полные результаты проверки |
tfupdate-report.json | Сводный отчёт для CI |
Смотрите также
- terraci tfupdate — описание CLI команды и флагов