Files
tf_provider/HOWTO-UPLOAD.md

4.9 KiB

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

Схема версий

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

Стенд Namespace Первая цифра Профиль
PROD nubes 2.* TOOLS/config/prod
DEV nubes-dev 3.* TOOLS/config/dev
TEST nubes-test 5.* TOOLS/config/test

Архитектура конфигурации

TOOLS/config/
├── registry.env          ← ЕДИНЫЙ реестр (НЕ зависит от стенда)
│     REGISTRY_HOSTNAME = tf-registry.containerk8s.services.ngcloud.ru
│     S3_ENDPOINT       = https://s3.msk-1.ngcloud.ru
│     S3_BUCKET         = nubes-terraform-registry
│
├── dev/profile.env       ← стенд-специфика
│     NUBES_API_ENDPOINT = ...dev...
│     TOKEN_FILE         = secrets/dev.token
│     NAMESPACE          = nubes-dev
│     VERSION            = 3.x.x
│
├── test/profile.env
└── prod/profile.env

Скрипты подгружают ОБА файла: registry.env → общие настройки реестра, profile.env → стенд-специфика.

Чтобы сменить реестр — правишь только TOOLS/config/registry.env.

Полный пайплайн (3 шага)

Требования

  • Токены в secrets/{dev,test,prod}.token
  • secrets/private_key.asc — GPG-ключ для подписи
  • secrets/.s3cfg_registry — S3-креды (или S3_ACCESS_KEY/S3_SECRET_KEY в env)
  • go установлен
  • mc (MinIO Client) установлен, алиас prod-s3

Шаг 1 — Сгенерировать YAML из API

cd ~/tf_provider
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev

Запрашивает спецификации сервисов из API стенда → пишет YAML в generated/dev/resources_yaml/.

Шаг 2 — Сгенерировать Go-ресурсы и документацию

./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev

Из YAML генерирует:

  • generated/dev/go/ — Go-код ресурсов
  • generated/dev/docs/ — Markdown-документацию

Шаг 3 — Собрать и залить в реестр

./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13

Компилирует (linux/windows/darwin), подписывает GPG, заливает в S3.

Одной командой (для ленивых)

./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev && \
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev && \
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13

Быстрая заливка (без перегенерации YAML/Go)

Если YAML'ы и Go-код уже сгенерированы и не менялись — только шаг 3:

# DEV
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13

# TEST
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 5.1.17

# PROD
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 2.1.23

Креды S3 подхватываются из secrets/.s3cfg_registry. Или через env:

export S3_ACCESS_KEY=...
export S3_SECRET_KEY=...

Структура S3

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

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

# 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

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

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

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

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