Files
tf_provider/README.md
T
Repinoid f7fffb9ed7 refactor: разложить рабочие материалы по NOTES/ и HOW_TO/, корневой README — карта проекта
- 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: пометки о соответствии старых путей
- внутри перенесённых файлов обновлены ссылки на новые пути
2026-09-24 07:51:38 +03:00

8.9 KiB
Raw Blame History

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/ — это отменённые («ложные») пути.