- NOTES/: 10_plans, 20_prompts, 30_analysis, 40_chat_summaries, 60_reference + README в каждой папке - HOW_TO/: все общие инструкции (сборка/заливка, DevOps-ранбук, добавление сервиса, миграция, генерация доков) + индекс «что нужно -> какой файл» - новый README.md: карта проекта, пайплайн, стенды, реестр, запреты/грабли - HOWTO-UPLOAD.md: исправлена легаси-схема версий (prod=1.*, dev=2.*, test=3.*) - DEVOPS_BUILD_PIPELINE.md: пути скриптов -> TOOLS/scripts, universal_rebuild/main.go -> provider/main.go - howitwasdone.md / MIGRATION_PLAN_FOR_AGENT.md: пометки о соответствии старых путей - внутри перенесённых файлов обновлены ссылки на новые пути
8.9 KiB
Terraform Provider Nubes — карта проекта
Репозиторий содержит Terraform-провайдер Nubes Cloud и всю обвязку вокруг него: генераторы (API → YAML → Go), пайплайн сборки/заливки, документацию, стенды и служебные материалы.
Облачная платформа — VMware Cloud Director; сервисы Nubes (vcOrg, vcVdc, vcNsxt, k8s…)
создают объекты в ней. Провайдер генерируется из спецификаций API, а не пишется руками.
🚦 Быстрая навигация
| Что нужно | Куда идти |
|---|---|
| Инструкции: сборка, заливка, добавление сервиса | HOW_TO/ ← начинать отсюда |
| Рабочие материалы: планы, промпты, анализы, выжимки чатов | NOTES/ |
| Пользовательская документация (mkdocs) | docs/ |
| Архив по датам и разборам | HISTORY/ |
| Пайплайн публикации документации | DOCS_PIPELINE/README.md |
| Залитые версии провайдера (источник правды) | VERSIONS.md |
| Правила генерации кода (обязательны для генератора) | TOOLS/ARCHITECTURE.md |
| Правила работы для агента | .github/copilot-instructions.md |
Текущая задача (IaC + modify) |
NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md |
Как собрать и залить провайдер (кратко)
cd /home/naeel/TF/tf_provider
# 1) YAML-спеки из API стенда
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
# 2) YAML → Go-ресурсы + документация
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev
# 3) Сборка (linux/windows/darwin) + GPG-подпись + заливка в S3
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
# 4) (опционально) публикация документации
./TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/dev 2.0.18
Подробные инструкции:
HOW_TO/HOWTO-UPLOAD.md (сборка/заливка) ·
HOW_TO/DEVOPS_BUILD_PIPELINE.md (полный ранбук + GPG-bootstrap) ·
HOW_TO/HOWTO_ADD_NEW_SERVICE.md (новый сервис).
Схема версий (жёстко): prod = 1.*, dev = 2.*, test = 3.*.
Легаси (prod=2.*, dev=3.*, test=5.*, 0.0.1) — не использовать.
Структура репозитория
| Путь | Что это |
|---|---|
HOW_TO/ |
Все общие инструкции: сборка/заливка, пайплайн, добавление сервиса, миграция, генерация доков. Индекс: HOW_TO/README.md |
NOTES/ |
Рабочие материалы: 10_plans, 20_prompts, 30_analysis, 40_chat_summaries, 60_reference. Карта: NOTES/README.md |
docs/ |
Документация: публикуемый сайт (mkdocs) + внутренние разделы (см. ниже) |
DOCS_PIPELINE/ |
Пайплайн публикации сайта документации (publish-docs.sh) |
HISTORY/ |
Архив по датам (HISTORY/OPUS/, HISTORY/SONNET/) — хроника решений и разборов |
TOOLS/ |
Генераторы и скрипты: yaml-generator (API→YAML), resource-generator (YAML→Go), docs-generator, scripts/, config/, lib/. Правила: TOOLS/ARCHITECTURE.md |
provider/ |
Исходники самого провайдера (ядро, CRUD-хелперы, main.go) |
generated/ |
Машинный выхлоп: generated/<стенд>/resources_yaml, /go, /docs, /provider_build |
DEV_STAND/, TEST_STAND/, PROD_STAND/ |
Terraform-манифесты стендов (проверочные конфигурации, sync.sh) |
HAR/ |
HAR-дампы live-запросов к API (сырые данные для анализа) |
secrets/ |
Токены стендов, GPG-ключи, S3-креды. Не коммитить |
gateway/, apps/, charts/ |
Вспомогательный сервис/приложения/чарты (вне ядра провайдера) |
tf_examples/, tfflaskcrud/, tfluceecrud/, tfnodejscrud/ |
Примеры конфигураций Terraform |
! / |
Прецедент Cloud Director (чужой tf-код на официальном terraform-provider-vcd) — образец «как надо» |
TMP/ |
Временное/бэкапы |
mkdocs.yml, site/, site_test/ |
Конфиг и вывод сборки сайта документации |
Документация: docs/
Собирается mkdocs (mkdocs.yml, nav → docs/). Разделы:
| Раздел | Что внутри |
|---|---|
docs/index.md, docs/30_registry/ |
Публикуется: главная, справочник ресурсов, руководства, ассеты |
docs/curated/ |
Проверенные примеры (напр. postgres/pg_user_db.md) |
docs/90_finance/ |
Финансовые шаблоны (акт) |
docs/ops/ |
Операционные runbook'и: API_TOKENS.md, STANDS.md, MONITORING.md, ROLLBACK.md, RUNBOOK.md, TESTING.md |
docs/help/ |
Внутренние справки: BUILD.md, build-and-publish.md, architecture-and-methods.md, error-knowledge-base.md, dev-reference/ |
docs/00_overview/, docs/20_discovery/, docs/40_analysis/, docs/50_history/, docs/60_strategy/, docs/70_api/ |
Внутренние разделы (исключены из сайта: exclude_docs в mkdocs.yml) |
docs/TODO/ |
Технические заметки «что не сделано» |
Пайплайн (что происходит под капотом)
API стенда ──01──▶ generated/<стенд>/resources_yaml/*.yaml (yaml-generator)
│
├──02──▶ generated/<стенд>/go/*.go (resource-generator + registry)
│ generated/<стенд>/docs/*.md (docs-generator)
│
├──03──▶ сборка linux/windows/darwin → GPG-подпись → S3-реестр
└──04──▶ mkdocs build → публикация документации
Ключевое: схема tf-ресурса строится из операции create в YAML, а ID операций/параметров
сохраняются из API. Нюансы и известные ограничения — в NOTES/30_analysis/ и NOTES/README.md.
Стенды и реестр
| Стенд | Namespace | Диапазон версий | Профиль |
|---|---|---|---|
| PROD | nubes |
1.* |
TOOLS/config/prod |
| DEV | nubes-dev |
2.* |
TOOLS/config/dev |
| TEST | nubes-test |
3.* |
TOOLS/config/test |
- Реестр:
tf-registry.containerk8s.services.ngcloud.ru; бакет бинарниковnubes-terraform-registry. - Общий конфиг реестра:
TOOLS/config/registry.env; стенд-специфика:TOOLS/config/<стенд>/profile.env(NUBES_API_ENDPOINT,TOKEN_FILE,NAMESPACE,VERSION). - Список сервисов для генерации:
TOOLS/config/services_list.txt.
⛔ Чего не делать
- Не использовать легаси-схемы версий (
prod=2.*,dev=3.*,test=5.*,0.0.1). - Не использовать закрытые API и хосты:
index.cfm,registry.kube5s.ru,deck-api.ngcloud.ru. - Не вызывать старые бинарники из
TOOLS/*/bin/— скрипты пересобирают генераторы сами. - Не перегенерировать GPG-ключ подписи — сломается
terraform initу пользователей. - Не путать бакеты: бинарники
nubes-terraform-registry, документацияterraform-registry. - Не опираться на файлы с баннером ⛔ в
NOTES/иHISTORY/— это отменённые («ложные») пути.