# Инструкция: как опубликовать провайдер в реестре Реестр: `https://go-registry.containerk8s.dev.nubes.ru` ## 1. Структура S3 ``` {prefix}/{namespace}/{name}/{version}/ ├── terraform-provider-{name}_{version}_{os}_{arch}.zip ← бинарник ├── terraform-provider-{name}_{version}_SHA256SUMS ← контрольные суммы └── terraform-provider-{name}_{version}_SHA256SUMS.sig ← GPG-подпись ``` Где: - `{prefix}` — сейчас `registry.kube5s.ru` (будет сменён) - `{namespace}` — `nubes-test`, `nubes-dev`, `nubes` (PROD) - `{name}` — `nubes` - `{os}_{arch}` — `linux_amd64`, `windows_amd64`, `darwin_amd64` Пример: ``` registry.kube5s.ru/nubes-test/nubes/5.1.17/terraform-provider-nubes_5.1.17_linux_amd64.zip ``` ## 2. Как загрузить в S3 ### Нужны креды ``` S3_ENDPOINT=s3.msk-1.ngcloud.ru S3_ACCESS_KEY=... S3_SECRET_KEY=... S3_BUCKET=terraform-registry ``` ### Утилита `mc` (MinIO Client) ```bash mc alias set nubes-s3 https://s3.msk-1.ngcloud.ru $S3_ACCESS_KEY $S3_SECRET_KEY # Загрузка mc cp ./terraform-provider-nubes_5.1.17_linux_amd64.zip \ nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ mc cp ./SHA256SUMS nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ mc cp ./SHA256SUMS.sig nubes-s3/terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ ``` ### Или `awscli` ```bash aws s3 cp ... s3://terraform-registry/registry.kube5s.ru/nubes-test/nubes/5.1.17/ \ --endpoint-url https://s3.msk-1.ngcloud.ru ``` ## 3. GPG-подпись (обязательно) Terraform требует подпись SHA256SUMS. ### Приватный ключ Хранится в `secrets/private_key.asc`. Публичный ключ (KEY ID: `3EC4673EB798238A`) вшит в реестр. ### Подписать ```bash gpg --import secrets/private_key.asc gpg --detach-sign --armor SHA256SUMS # → SHA256SUMS.asc (переименовать в SHA256SUMS.sig) ``` ## 4. Документация ``` docs/{namespace}/{name}/{version}/index.html docs/{namespace}/{name}/{version}/...любые файлы... ``` Заливаешь в S3 — автоматом доступна по: ``` https://go-registry.containerk8s.dev.nubes.ru/docs/{ns}/{name}/{ver}/ ``` ## 5. Использование пользователем ```hcl terraform { required_providers { nubes = { source = "go-registry.containerk8s.dev.nubes.ru/nubes-test/nubes" version = "5.1.17" } } } ``` Terraform сам найдёт реестр, скачает провайдер, проверит SHA256 и GPG-подпись. ## 6. Скрипт автоматизации В репозитории `tf_registry` есть скрипт `server/build-provider.sh` — он делает всё сам: - Компилирует провайдер под linux/windows/darwin × amd64 - Упаковывает в zip - Генерирует SHA256SUMS - Подписывает GPG - Заливает в S3 ```bash VERSION=5.1.17 NAMESPACE=nubes-test ./server/build-provider.sh ```