# Terraform Provider Registry Реестр Terraform-провайдеров по протоколу HashiCorp. Деплой: Docker-контейнер в Nubes Cloud (`containerk8s`). **URL:** `https://registry.containerk8s.dev.nubes.ru` ## Структура ``` ├── server/ # Go-код HTTP-сервера │ ├── main.go # Роуты, S3, структуры │ ├── gpg_key.go # GPG-ключи (2 шт.) │ ├── docs.go # Статика документации из S3 │ ├── build-provider.sh # Сборка и заливка провайдера │ ├── go.mod / go.sum │ └── gpg/ ├── tests/ │ └── smoke.sh # 9 интеграционных тестов ├── secrets/ # Креды (в .gitignore) ├── HISTORY/ # Документация, планы, ревью ├── Dockerfile # Multi-stage сборка (ветка go-container) └── .gitignore ``` ## Эндпоинты | Метод | URL | Ответ | |---|---|---| | GET | `/` | HTML с версией | | GET | `/.well-known/terraform.json` | `{"providers.v1":"/v1/providers/"}` | | GET | `/v1/providers/{ns}/{name}/versions` | JSON: список версий и платформ | | GET | `/v1/providers/{ns}/{name}/{ver}/download/{os}/{arch}` | JSON: download_url, shasum, GPG | | GET | `/v1/proxy?key=...` | Стриминг файла из S3 | | GET | `/docs/{ns}/{name}/{ver}/...` | Статика документации из S3 | | GET | `/healthz` | `ok` 200 | | GET | `/readyz` | `ok` 200 (проверяет S3) | ## Сборка и деплой ```bash # Сборка образа (на ВМ) ssh naeel@5.172.178.213 cd ~/tf_registry && git checkout go-container docker build -t gitea.services.ngcloud.ru/nail/tf_registry:latest . docker push gitea.services.ngcloud.ru/nail/tf_registry:latest # Редеплой — через UI modify или пересоздать инстанс ``` ## Заливка провайдера Подробно: `HISTORY/HOWTO-UPLOAD.md` Кратко: ```bash export REGISTRY_HOSTNAME=registry.containerk8s.dev.nubes.ru export S3_ENDPOINT=http://ceph.tst.nubes.ru export S3_ACCESS_KEY=... # super-креды export S3_SECRET_KEY=... bash server/build-provider.sh 5.1.17 ``` ## Тесты ```bash bash tests/smoke.sh ``` ## Конфигурация | Где | Что | |---|---| | `jsonEnv` (UI) | Только `S3_ACCESS_KEY`, `S3_SECRET_KEY` (reader) | | `Dockerfile ENV` | `S3_ENDPOINT`, `S3_BUCKET`, `S3_PREFIX`, `REGISTRY_HOSTNAME`, `PORT`, `S3_USE_SSL` | Подробно: `HISTORY/env-config.md` ## Ветки | Ветка | Назначение | |---|---| | `master` | Основная, чистый код | | `go-container` | Сборка: Go + Dockerfile | | `with-flask-legacy` | Архив Flask-версии | | `golang` | Архив исходного Go (до правок) |