Files
tf_provider/HOWTO-UPLOAD.md
T

4.5 KiB
Raw Blame History

Как залить провайдер в реестр

Схема версий

Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.

Стенд Namespace Версия Первая цифра
PROD nubes 2.x 2.*
DEV nubes-dev 3.x 3.*
TEST nubes-test 5.x 5.*

Пример: 3.0.1 — DEV. 5.1.17 — TEST. 2.1.23 — PROD.

Конфигурация

Реестр

  • URL: https://tf-registry.containerk8s.services.ngcloud.ru
  • S3: s3.msk-1.ngcloud.ru (HTTPS)
  • Бакет: nubes-terraform-registry
  • S3-префикс: tf-registry.containerk8s.services.ngcloud.ru

Креды (аккаунт 1112_terraform)

Subuser Назначение Права
1112_terraform:reader Реестр (только читает) read + list
1112_terraform:super Заливка провайдеров write
Reader: 6DDP5PKQEE37WLSWXP07 / W0vV4YNeHIqMa2sRCXsR61ZuQfAJIZzVj2VgnBrT
Super:  L9F0R8CYYKYIUW180203 / yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw

Структура S3

nubes-terraform-registry/
└── tf-registry.containerk8s.services.ngcloud.ru/
    └── {namespace}/
        └── {provider}/
            └── {version}/
                ├── terraform-provider-{name}_{ver}_linux_amd64.zip
                ├── terraform-provider-{name}_{ver}_windows_amd64.zip
                ├── terraform-provider-{name}_{ver}_darwin_amd64.zip
                ├── terraform-provider-{name}_{ver}_SHA256SUMS
                └── terraform-provider-{name}_{ver}_SHA256SUMS.sig

Заливка (build-provider.sh)

Требования

  • ~/tf_registry/ — склонирован репозиторий реестра
  • ~/tf_provider/ — этот репозиторий
  • ~/tf_provider/secrets/private_key.asc — приватный GPG-ключ для подписи
  • go установлен
  • mc (MinIO Client) установлен

Команды

# 1. Настроить mc (один раз, креды SUPER)
mc alias set prod-s3 https://s3.msk-1.ngcloud.ru L9F0R8CYYKYIUW180203 yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw

# 2. Креды для S3 (обязательно)
export S3_ACCESS_KEY=L9F0R8CYYKYIUW180203
export S3_SECRET_KEY=yJlgxoKsRBwCtJQh57Z0nwo5EBDYmyBNDDhG6NKw

# 3. Заливка (NAMESPACE + VERSION)
# DEV:
export NAMESPACE=nubes-dev
bash ~/tf_registry/server/build-provider.sh 3.0.1

# TEST:
export NAMESPACE=nubes-test
bash ~/tf_registry/server/build-provider.sh 5.1.17

# PROD:
export NAMESPACE=nubes
bash ~/tf_registry/server/build-provider.sh 2.1.23

Дефолты скрипта (можно переопределить через env):

  • REGISTRY_HOSTNAME = tf-registry.containerk8s.services.ngcloud.ru
  • NAMESPACE = nubes-test
  • PROVIDER_NAME = nubes
  • S3_ENDPOINT = https://s3.msk-1.ngcloud.ru
  • S3_BUCKET = nubes-terraform-registry
  • PROVIDER_DIR = ~/tf_provider/provider

Что делает скрипт

  1. Компилирует Go → linux/windows/darwin × amd64
  2. Упаковывает в zip
  3. Генерирует SHA256SUMS
  4. Подписывает GPG (ключ secrets/private_key.asc)
  5. Заливает в S3

Проверка после заливки

# DEV
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions | python3 -m json.tool

# TEST
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-test/nubes/versions | python3 -m json.tool

# PROD
curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/nubes/versions | python3 -m json.tool

# Smoke-тест
bash ~/tf_registry/tests/smoke.sh https://tf-registry.containerk8s.services.ngcloud.ru

Актуальные версии

Файл VERSIONS.md — единственный источник правды о том, что залито на каждом стенде. После каждой заливки — обновить VERSIONS.md.

Namespace'ы

Namespace Назначение
nubes-test Тестовый стенд
nubes-dev Dev-стенд
nubes Прод

Terraform-конфиг пользователя:

terraform {
  required_providers {
    nubes = {
      source  = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
      version = "5.1.17"
    }
  }
}