28 lines
2.7 KiB
Markdown
28 lines
2.7 KiB
Markdown
# План внедрения: динамическое вычисление UUID Default Security Group
|
||||
|
|
|
|||
|
|
Дата: 2026-09-04
|
|||
|
|
|
|||
|
|
## Проблема
|
|||
|
|
|
|||
|
|
В `terraform/main.tf` в 4 местах (router, priv_srv_01/02/03) захардкожен литерал `"d479b4d7-55b3-4ff1-bf8d-24d826a38f11"` — UUID системной Security Group `default`, автоматически создаваемой в каждом проекте VK Cloud, но **уникальной по UUID для каждого проекта**. Код не переносим между проектами без ручной правки.
|
|||
|
|
|
|||
|
|
## Решение
|
|||
|
|
|
|||
|
|
Провайдер `vkcs` предоставляет data source `vkcs_networking_secgroup` (проверено локально через `terraform providers schema -json` на уже установленном provider-mirror v0.17.2) с фильтром по `name`/`sdn` и computed-атрибутом `id`. Автосозданная группа по умолчанию называется `default` (подтверждено пользователем для целевого проекта).
|
|||
|
|
|
|||
|
|
Явная передача UUID через переменную (в т.ч. `TF_VAR_default_security_group_id`) остаётся только как fallback на крайний случай — через `coalesce()`.
|
|||
|
|
|
|||
|
|
## Шаги
|
|||
|
|
|
|||
|
|
1. `terraform/main.tf`: добавить `data "vkcs_networking_secgroup" "default" { name = "default"; sdn = "sprut" }` и `locals.default_security_group_id = coalesce(var.default_security_group_id, data.vkcs_networking_secgroup.default.id)`; заменить 4 вхождения литерала на `local.default_security_group_id`.
|
|||
|
|
2. `terraform/variables.tf`: добавить `default_security_group_id` (string, default `null`, без validation — это осознанный override).
|
|||
|
|
3. `terraform/tests/test_terraform_delivery.py`: regression-guard на отсутствие старого UUID-литерала; проверка, что data source и локаль существуют и используются; расширить `variables.tf`-only plan-тест на новую переменную.
|
|||
|
|
4. `README.md`/`docs/QUICKSTART.md`: кратко описать механизм и его fallback-статус.
|
|||
|
|
5. Summary-документ по завершении.
|
|||
|
|
|
|||
|
|
## Верификация
|
|||
|
|
|
|||
|
|
- `terraform fmt -check -recursive`.
|
|||
|
|
- Реальные `terraform init`/`validate` через локальный provider-mirror.
|
|||
|
|
- `venv/bin/pytest terraform/tests -v`.
|
|||
|
|
- Реальный lookup (`plan`/`apply` с настоящими credentials) проверяется пользователем самостоятельно в VK Cloud — вне офлайн-песочницы.
|