Публикация в Registry

Тема дорожной карты · Terraform

Публикация провайдеров Terraform — это процесс выпуска кастомного провайдера HashiCorp Terraform или OpenTofu в публичный Terraform Registry или приватный реестр, чтобы любая конфигурация могла его использовать через блок required_providers и команду terraform init. Перед публикацией провайдер должен быть собран с помощью Terraform Go SDK, подписан GPG-ключом и скомпилирован для нескольких целевых ОС и архитектур (Linux, macOS, Windows на amd64 и arm64) с использованием goreleaser. Terraform Registry проверяет структуру репозитория, читает соглашение об именовании бинарника terraform-provider-<name> и автоматически генерирует документацию из описаний схемы, превращая публикацию в простое создание GitHub-релиза после подключения репозитория к registry.terraform.io. Для приватных или внутренних провайдеров команды размещают бинарники на сетевом зеркале или реестре провайдеров на основе Artifactory, настроенном в ~/.terraformrc или директории terraform.d/plugins, обходя публичный Registry. Правильно опубликованные провайдеры Terraform включают приёмочные тесты с использованием terraform-plugin-testing, CHANGELOG.md, семантическое версионирование и объявления совместимости модулей, чтобы потребители могли фиксировать версии в автоматизированных конвейерах AWS, Azure, GCP и Kubernetes.

Как это работает

Публикация в Registry — написание своего Terraform-провайдера на Go через Terraform Plugin Framework (современный, с 2022) или старый SDK v2. Провайдер реализует Schema, Configure, CRUD-методы (Create, Read, Update, Delete) на каждый ресурс. Публикуется в Terraform Registry (публично) или хостится приватно. Тестируется acceptance-тестами против реального или mock-API.

Когда применять

Свой провайдер — только когда (а) у целевой системы нет существующего Terraform-провайдера, (б) поддержка инфры через Terraform реально лучше другого инструмента (Helm chart, кастомный CLI, Pulumi). Для внутренних микросервисов часто проще конфигурация через Helm/Kustomize, чем провайдер. Кастомный провайдер — реальный софт с реальной стоимостью поддержки.

Типичные ошибки

Ловушки Публикация в Registry: пишут провайдер, когда хватило бы Kubernetes-оператора или простого CLI; не обрабатывают Read корректно (drift-detection ломается); нет версионирования (каждый релиз — пересборка latest); пропуск acceptance-тестов (тонкие баги едут к юзерам провайдера).

Связанные понятия

Полезные ресурсы