diff --git a/docs/TODO/what_not_in_terraform.md b/docs/TODO/what_not_in_terraform.md deleted file mode 100644 index f4a0cae..0000000 --- a/docs/TODO/what_not_in_terraform.md +++ /dev/null @@ -1,46 +0,0 @@ -# Что НЕ надо класть в Terraform и почему - -## Не управляется Terraform — делается в Личном кабинете (один раз) - -### vcOrg / vcVdc / vcNsxt — облачный фундамент - -| Сервис | Почему не Terraform | -|--------|---------------------| -| **Организация в Cloud Director** (vcOrg) | Одна на resources realm. Нельзя создать вторую. При destroy — карантин на 14 дней, блокирует всё. | -| **Виртуальный датацентр vDC** (vcVdc) | Квота: 1 на организацию. Создание через Terraform ломается на API (500 на `GET cfsParams`). | -| **Сетевой шлюз Edge** (vcNsxt) | Квота: 1 на vDC. Требует AVI, SNAT, ipSpace — настройка в 3 шага (create → modify org → modify edge). Terraform не умеет create+modify в одном apply. | - -**Вывод**: фундамент всегда уже есть у любого клиента. Создаётся один раз через ЛК. - -### Штурвал (Kubernetes-кластер) - -| Почему не Terraform | -|---------------------| -| Одноразовая операция. Модификаций почти нет — workers, версия, диски, и то редко. | -| Destroy = потеря кластера со всеми подами и данными. `suspend_on_destroy` спасает, но риск велик. | -| Процесс создания длительный, чувствителен к таймаутам и сбоям — в ЛК виднее что происходит. | - -## Что Управляется Terraform — PaaS/SaaS слой - -``` -PostgreSQL Redis Kafka ClickHouse RabbitMQ MariaDB MongoDB -S3 Buckets Node.js Lucee Gitea Nextcloud Harbor ... -``` - -Эти сервисы создаются/меняются/удаляются многократно, имеют повторяемые конфигурации и связаны зависимостями (app → db, app → s3). - -## Схема - -``` -┌─ Личный кабинет (один раз) ──────────┐ -│ vcOrg → vcVdc → vcNsxt (Edge+AVI) │ -│ Штурвал (Kubernetes-кластер) │ -└──────────────────────────────────────┘ - │ edge_uid - ▼ -┌─ Terraform (IaC, повторяемо) ────────┐ -│ Postgres, S3, Redis, Kafka, │ -│ RabbitMQ, ClickHouse, MariaDB, │ -│ MongoDB, Node.js, Lucee, Gitea ... │ -└──────────────────────────────────────┘ -``` diff --git a/provider/internal/provider/provider.go b/provider/internal/provider/provider.go index 13b2e73..0e3f22b 100644 --- a/provider/internal/provider/provider.go +++ b/provider/internal/provider/provider.go @@ -183,8 +183,7 @@ func (p *NubesProvider) Resources(ctx context.Context) []func() resource.Resourc resources := resources_gen.AllResources() resources = append(resources, resources_core.NewServiceOperationResource) // Ресурсы-модификаторы для операций, которых нет в create-схеме ресурсов-инстансов. - // Организация и шлюз создаются вручную в ЛК (docs/TODO/what_not_in_terraform.md), - // поэтому адресуются по uid, а не ссылкой на ресурс. + // Организация и шлюз создаются вручную в ЛК, поэтому адресуются по uid, а не ссылкой на ресурс. resources = append(resources, resources_core.NewOrgIpAllocationResource) resources = append(resources, resources_core.NewNsxtSnatResource) return resources diff --git a/provider/internal/resources_core/org_ip_allocation_resource.go b/provider/internal/resources_core/org_ip_allocation_resource.go index 94468df..ac258de 100644 --- a/provider/internal/resources_core/org_ip_allocation_resource.go +++ b/provider/internal/resources_core/org_ip_allocation_resource.go @@ -25,7 +25,7 @@ var _ resource.ResourceWithImportState = &OrgIpAllocationResource{} // (сервис 19, vc_org) через операцию modify с параметром vIPConfigure (id 662). // // Организация НЕ управляется Terraform: она создаётся один раз вручную в ЛК -// (см. docs/TODO/what_not_in_terraform.md) и адресуется здесь по uid. +// и адресуется здесь по uid. // // Семантика операции — replace всего массива: переданное значение полностью заменяет // текущую аллокацию (проверено тестом NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md).