Files
tf_registry/HISTORY/HOWTO-PUBLISH.md
T

3.1 KiB
Raw Blame History

Инструкция: как опубликовать провайдер в реестре

Реестр: 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)

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

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) вшит в реестр.

Подписать

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. Использование пользователем

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
VERSION=5.1.17 NAMESPACE=nubes-test ./server/build-provider.sh