4.9 KiB
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"
}
}
}