146 lines
4.9 KiB
Markdown
146 lines
4.9 KiB
Markdown
# Как собрать и залить провайдер
|
|
|
|
## ⛔ Схема версий
|
|
|
|
**Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.**
|
|
|
|
| Стенд | 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
|
|
|
|
```bash
|
|
cd ~/tf_provider
|
|
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
|
|
```
|
|
|
|
Запрашивает спецификации сервисов из API стенда → пишет YAML в `generated/dev/resources_yaml/`.
|
|
|
|
### Шаг 2 — Сгенерировать Go-ресурсы и документацию
|
|
|
|
```bash
|
|
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev
|
|
```
|
|
|
|
Из YAML генерирует:
|
|
- `generated/dev/go/` — Go-код ресурсов
|
|
- `generated/dev/docs/` — Markdown-документацию
|
|
|
|
### Шаг 3 — Собрать и залить в реестр
|
|
|
|
```bash
|
|
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
|
```
|
|
|
|
Компилирует (linux/windows/darwin), подписывает GPG, заливает в S3.
|
|
|
|
### Одной командой (для ленивых)
|
|
|
|
```bash
|
|
./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:
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
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
|
|
```
|
|
|
|
## Проверка после заливки
|
|
|
|
```bash
|
|
# 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`](VERSIONS.md) — единственный источник правды. После каждой заливки — обновить.
|
|
|
|
## Terraform-конфиг пользователя
|
|
|
|
```hcl
|
|
terraform {
|
|
required_providers {
|
|
nubes = {
|
|
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
|
|
version = "3.1.13"
|
|
}
|
|
}
|
|
}
|
|
```
|