# 2026-10-01 — Стенд `TEST_STAND/FPipeGmail`: копия dev-примера, адаптированная под test > Команда владельца: «`DEV_STAND/FPipeGmail` — это в дев. Надо — сделать такую же папку > в `TEST_STAND` и соответственно изменить параметры в tf-конфигах, и посмотри чтобы > не было коллизий — там в стенде есть и эдж и вдц. Найди имя огра». ## Что сделано Создана `TEST_STAND/FPipeGmail/` — копия `DEV_STAND/FPipeGmail` **без** `.terraform/`, `terraform.tfstate*`, `.terraform.lock.hcl` (это состояние dev, к test оно не относится). Состав: `vdc.tf`, `edge.tf`, `modifiers.tf`, `vm.tf`, `shturval.tf`, `variables.tf`, `outputs.tf`, `provider.tf`, `versions.tf`, `terraform.tfvars` (+ `.example`). ## Найденные данные test-стенда (из API, не из догадок) | Что | Значение | Откуда | |---|---|---| | Организация (vcOrg) | **`NaeelOrg`**, uuid `3f0850f2-3506-4efd-b84b-7270b5027ab5`, `running`, `iaas` | `GET /instances?serviceId=19` | | ipSpace на организации | `internet-ipv4-v1`, уже выделено **10** IP | `GET /instances/3f0850f2-…` → `vIPConfigure` | | networkProvider | `snb1` | `GET /instances/e3c9e4f1-…` (существующий vDC `naeel-vdc`) | | providerVdc | `Intel Broadwell 2.4` | там же | | storage | `SSD` | там же (`storageConfig`) | | realm | `sandbox.nubes.ru` | `GET /instances/3f0850f2-…` | ## Изменённые параметры (dev → test) | Файл | Было (dev) | Стало (test) | |---|---|---| | `versions.tf` | `…/nubes-dev/nubes`, `2.0.1` | **`…/nubes-test/nubes`, `3.0.0`** | | `variables.tf` → `api_endpoint` | `lk-api-gateway-dev…` | **`lk-api-gateway-test…`** | | `terraform.tfvars` → `organization` | `kontra` | **`NaeelOrg`** | | `terraform.tfvars` → `api_token` | dev-токен | **test-токен** (`secrets/test.token`) | | `terraform.tfvars` → `ip_count` | `4` | **`10`**, затем **`12`** (см. раздел про первый apply) | | `terraform.tfvars` → `vdc_storage_config` | `SATA / 200` | **`SSD / 200`** (в test vDC строят на SSD) | | `shturval.tf` → `shturval_resource_name` | `shturval-dev1` | **`shturval-test1`** | | `shturval.tf` → `shturval_cluster_name` | `shturval-dev-01` | **`shturval-test-01`** | | `shturval.tf` → `shturval_worker_group_name` | `workers-shturval-dev` | **`workers-shturval-test`** | Не менялись (совпадают с test): `vdc_network_provider=snb1`, `vdc_provider_vdc="Intel Broadwell 2.4"`, `ip_space_name=internet-ipv4-v1`, DNS/пул Edge, имена `fullpipe-vdc` / `fullpipe-edge` / `fullpipe-vapp-02`. ## Исключение блока ВМ (2026-10-01, по команде владельца) Файл `TEST_STAND/FPipeGmail/vm.tf` (всё, что относится к vApp и ВМ: переменные, оба ресурса, выводы) **закомментирован целиком** блочным комментарием `/* … */`. - Причина: в test инстанс vApp не прошёл валидацию схемы («Не удалось произвести валидацию схемы инстанса. Запустите операцию reconcile»). - Дополнительно: в test разработчику нужно поднять остальную цепочку (vDC → Edge → IP → SNAT → Штурвал), а ВМ/vApp — позже. - Как вернуть: удалить первую и последнюю строки блочного комментария в `vm.tf`. После правки: `terraform fmt -check` — OK, `terraform validate` — Success, `terraform plan` — **1 to add** (только `nubes_k8s_sthutrval_cluster.shturval`). Инстансов vApp/ВМ стенда в тенанте нет — все записи `deleted`. ## Первый `apply` в test: ошибки и что с ними делать (2026-10-01) Создались: `nubes_vc_vdc.vdc` (`fullpipe-vdc`), `nubes_vc_nsxt.edge` (`fullpipe-edge`), `nubes_vc_org_ip_allocation.org_ip`, `nubes_vc_nsxt_snat.snat`. Упали два ресурса: | Ресурс | Ошибка | Причина / решение | |---|---|---| | `nubes_k8s_sthutrval_cluster.shturval` | операция `61F4FF33-…`: «Кол-во свободных Ip в тенанте `WZ03709-iaas`: 1. Необходимо 2… Перейдите в настройки услуги „Организация в Cloud Director“(3f0850f2-…) → Операция modify» | **квота внешних IP**: на `NaeelOrg` было `count=10`, свободным остался 1 (часть держит кластер `iot-naeel`). Решение: `ip_count` **10 → 12** и применить модификатор | | `nubes_vapp.vapp` (`fullpipe-vapp-02`) | «Не удалось произвести валидацию схемы инстанса. Запустите операцию `reconcile` у инстанса „Виртуальный каталог ВМ (vApp)“» | инстанс ушёл в `not created`; вероятно плавающая ошибка — проверить после увеличения IP, при повторе сделать `reconcile` | После `terraform destroy` (сделан владельцем): | Объект | Состояние | Почему | |---|---|---| | `fullpipe-vdc` (21) | `suspended` | `suspend_on_destroy = true` — «заморозка» | | `fullpipe-edge` (22) | `running` | `keep_on_destroy = true` — destroy эдж не трогает | | локальный `state` | пуст | — | Порядок исправления: ```bash # 1) поднять квоту внешних IP (terraform.tfvars: ip_count="12") — выполняет владелец: terraform apply -target=nubes_vc_org_ip_allocation.org_ip # 2) при необходимости — reconcile у vApp в ЛК # 3) полный цикл (vApp и Штурвал пересоздаются, vDC размораживается, Edge усыновляется): terraform apply ``` ## Проверка коллизий (в test уже есть эдж и vDC) Занято в test сейчас: | Услуга | Имена | Статус | |---|---|---| | vDC (21) | `naeel-vdc`, `VDC для кластера iot-naeel` | running | | Edge (22) | `naeel_vc_nsxt`, `Edge для кластера IOT naeel` | running | | vApp (26) | `vapp-222`, `vm-sless-vapp`, `vm-sless-demo-vapp` | deleted | | ВМ (28) | `vm-sless`, `vm-sless-1`, `vm-sless-demo` | deleted | | Штурвал (150) | `naeel-wheel` (deleted), `Кластер Kubernetes [iot-naeel]` | running | Наши имена (`fullpipe-vdc`, `fullpipe-edge`, `fullpipe-vapp-02`, `web02`, `shturval-test1`) **свободны** — пересечений нет. ## Проверки конфигурации ```bash terraform init # установлен nubes-test/nubes 3.0.0 (подпись CB3A0DF161ECC416) terraform fmt -check -recursive # OK terraform validate # Success! The configuration is valid. terraform plan # Plan: 7 to add, 0 to change, 0 to destroy ``` ⚠️ `terraform apply` **не выполнялся** — по правилам запускает только владелец. ## Риск, который надо помнить - `nubes_vc_org_ip_allocation` (модификатор `vIPConfigure`) **перезаписывает массив внешних IP целиком**. В test на `NaeelOrg` уже выделено 10 адресов (их использует кластер `iot-naeel`), поэтому `ip_count="10"` — уменьшение сломает чужой стенд. - В `.gitignore` уже закрыты `terraform.tfvars`, `.terraform/`, `.terraform.lock.hcl`, `terraform.tfstate*` — в репозиторий попадут только `.tf` и `terraform.tfvars.example`. ## Связанные документы - `HISTORY/2026-09-25_fullpipe_example_shturval_and_docs.md` — исходный пример FPipeGmail (dev). - `HISTORY/2026-10-01_release_x_0_0_all_stands.md` — актуальные версии провайдеров стендов.