feat(test-stand): TEST_STAND/FPipeGmail — копия dev-примера под test-стенд
Создана папка (без .terraform/state/lock — это состояние dev). Изменены параметры: - versions.tf: nubes-dev/nubes 2.0.1 -> nubes-test/nubes 3.0.0; - variables.tf: api_endpoint -> lk-api-gateway-test.ngcloud.ru; - terraform.tfvars: organization=NaeelOrg (найдена через API, svc 19), ip_count=10 (в test на орге уже выделено 10 IP), storage SSD (в test vDC строят на SSD); - shturval.tf: shturval-test1 / shturval-test-01 / workers-shturval-test. Коллизии проверены: в test заняты naeel-vdc, 'VDC для кластера iot-naeel', naeel_vc_nsxt, 'Edge для кластера IOT naeel', 'Кластер Kubernetes [iot-naeel]' — наши имена (fullpipe-vdc/-edge/-vapp-02, web02, shturval-test1) свободны. Проверено: terraform init (3.0.0), fmt -check OK, validate Success, plan = 7 to add / 0 change / 0 destroy. apply НЕ запускался. Документация: HISTORY/2026-10-01_test_stand_fpipegmail.md
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# =============================================================================
|
||||
# Ресурсы-модификаторы (операции modify, которых нет в create-схеме ресурсов)
|
||||
#
|
||||
# Порядок строго такой:
|
||||
# орга (создана вручную в ЛК)
|
||||
# -> nubes_vc_vdc.vdc
|
||||
# -> nubes_vc_nsxt.edge
|
||||
# -> nubes_vc_org_ip_allocation (выделение внешних IP на орге)
|
||||
# -> nubes_vc_nsxt_snat (SNAT на эдже этим ipSpace)
|
||||
#
|
||||
# Почему аллокация ПОСЛЕ эджа: платформа строит список ipSpace из состояния
|
||||
# `job.vcd.networkProvider` / `job.vcd.providerGateway`, то есть требует уже
|
||||
# созданный vDC и Edge. Иначе modify на орге падает
|
||||
# («Can't cast Complex Object Type Struct to String»).
|
||||
# =============================================================================
|
||||
|
||||
# 1. Внешние IP на организации (modify: vIPConfigure, массив перезаписывается целиком)
|
||||
resource "nubes_vc_org_ip_allocation" "org_ip" {
|
||||
organization = var.organization
|
||||
|
||||
vip_configure = jsonencode([
|
||||
{
|
||||
name = var.ip_space_name
|
||||
count = var.ip_count
|
||||
}
|
||||
])
|
||||
|
||||
# true = «заморозка»: destroy не трогает квоту внешних IP (кластер Штурвала держит
|
||||
# адреса, опустить count ниже занятых платформа не даёт). Для полного удаления — false
|
||||
# (и только после удаления кластера).
|
||||
keep_on_destroy = true
|
||||
|
||||
depends_on = [nubes_vc_nsxt.edge]
|
||||
}
|
||||
|
||||
# 2. SNAT на эдже (modify: ipSpaceName)
|
||||
resource "nubes_vc_nsxt_snat" "snat" {
|
||||
nsxt_uid = nubes_vc_nsxt.edge.id
|
||||
ip_space_name = var.ip_space_name
|
||||
|
||||
# true = «заморозка»: destroy не выключает SNAT на эдже. Для полного удаления — false.
|
||||
keep_on_destroy = true
|
||||
|
||||
# ipSpace должен быть уже выделен на организации
|
||||
depends_on = [nubes_vc_org_ip_allocation.org_ip]
|
||||
}
|
||||
|
||||
output "allocated_org_ip" {
|
||||
description = "Выделено внешних IP на организации"
|
||||
value = {
|
||||
organization = var.organization
|
||||
ip_space_name = var.ip_space_name
|
||||
ip_count = var.ip_count
|
||||
}
|
||||
}
|
||||
|
||||
output "snat_ip_space" {
|
||||
description = "ipSpace, включённый как SNAT на эдже"
|
||||
value = nubes_vc_nsxt_snat.snat.ip_space_name
|
||||
}
|
||||
Reference in New Issue
Block a user