The "default" security group VK Cloud auto-creates in every project has a UUID unique to that project, but main.tf hardcoded one project's UUID across all 4 instance resources (router, priv_srv_01/02/03) - not portable to another project. Replaced with data.vkcs_networking_secgroup (matched by name = "default", verified against the real provider schema via terraform providers schema -json on the local provider mirror) behind local.default_security_group_id. The new default_security_group_id variable is a last-resort manual override via coalesce() for projects where the lookup doesn't fit (non-standard name/SDN) - not the normal path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011hXR2ftXZZhJ4Y3XuSoR8r
2.7 KiB
План внедрения: динамическое вычисление 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().
Шаги
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.terraform/variables.tf: добавитьdefault_security_group_id(string, defaultnull, без validation — это осознанный override).terraform/tests/test_terraform_delivery.py: regression-guard на отсутствие старого UUID-литерала; проверка, что data source и локаль существуют и используются; расширитьvariables.tf-only plan-тест на новую переменную.README.md/docs/QUICKSTART.md: кратко описать механизм и его fallback-статус.- Summary-документ по завершении.
Верификация
terraform fmt -check -recursive.- Реальные
terraform init/validateчерез локальный provider-mirror. venv/bin/pytest terraform/tests -v.- Реальный lookup (
plan/applyс настоящими credentials) проверяется пользователем самостоятельно в VK Cloud — вне офлайн-песочницы.