feat(stand/FullPipe): орг organ (org_uid) + ресурсы-модификаторы — аллокация IP после эджа, затем SNAT
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# =============================================================================
|
||||
# Ресурсы-модификаторы (операции 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" {
|
||||
org_uid = var.org_uid
|
||||
|
||||
vip_configure = jsonencode([
|
||||
{
|
||||
name = var.ip_space_name
|
||||
count = var.ip_count
|
||||
}
|
||||
])
|
||||
|
||||
# false = при destroy отправить обратный modify с count=0 (квота обнулится)
|
||||
keep_on_destroy = false
|
||||
|
||||
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
|
||||
|
||||
keep_on_destroy = false
|
||||
|
||||
# ipSpace должен быть уже выделен на организации
|
||||
depends_on = [nubes_vc_org_ip_allocation.org_ip]
|
||||
}
|
||||
|
||||
output "allocated_org_ip" {
|
||||
description = "Выделено внешних IP на организации"
|
||||
value = {
|
||||
org_uid = var.org_uid
|
||||
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