Terraform Plugin Framework

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

Terraform Go SDK — это официальный фреймворк HashiCorp для создания кастомных провайдеров Terraform на Go, позволяющий инженерам представлять любой API-сервис как первоклассные блоки resource и data, доступные в HCL-конфигурациях. SDK предоставляет два основных интерфейса: устаревший пакет helper/schema и современный terraform-plugin-framework, обладающий более строгой типизацией, улучшенной диагностикой и нативной поддержкой Terraform Protocol версии 6, используемого как Terraform, так и OpenTofu. С помощью Terraform Go SDK разработчик определяет CRUD-операции (Create, Read, Update, Delete), сопоставленные с API-вызовами, объявляет схему с типами атрибутов и правилами валидации, затем регистрирует провайдер, чтобы terraform init мог загрузить и кешировать его из Terraform Registry или приватной точки распространения. SDK интегрируется с terraform-plugin-testing и Terratest для написания приёмочных тестов, поднимающих реальные ресурсы, запускающих terraform apply, проверяющих значения состояния и убирающих всё через terraform destroy. Освоение Terraform Go SDK является обязательным условием для публикации провайдеров Terraform в публичном Registry или распространения внутренних провайдеров среди команд платформ AWS, Azure, GCP или Kubernetes.

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

Terraform Plugin Framework — написание своего 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, чем провайдер. Кастомный провайдер — реальный софт с реальной стоимостью поддержки.

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

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

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

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