62 lines
2.6 KiB
Terraform
62 lines
2.6 KiB
Terraform
# =============================================================================
|
||
# Ресурсы, которые выполняют операции modify над уже созданными услугами.
|
||
#
|
||
# Порядок строго такой:
|
||
# организация (создаётся заранее в ЛК)
|
||
# -> nubes_vc_vdc.vdc
|
||
# -> nubes_vc_nsxt.edge
|
||
# -> nubes_vc_org_ip_allocation (внешние IP на организации)
|
||
# -> nubes_vc_nsxt_snat (SNAT на шлюзе этим ipSpace)
|
||
#
|
||
# Аллокация IP идёт ПОСЛЕ шлюза: платформа строит список доступных ipSpace
|
||
# только когда vDC и Edge уже созданы. Если поменять порядок — modify упадёт
|
||
# с ошибкой «Can't cast Complex Object Type Struct to String».
|
||
# =============================================================================
|
||
|
||
# 1. Внешние IP на организации.
|
||
resource "nubes_vc_org_ip_allocation" "org_ip" {
|
||
# та же организация, что у vDC: название услуги из ЛК или её UUID
|
||
organization = var.organization
|
||
|
||
# сколько IP выделить: name — имя ipSpace, count — количество (строкой).
|
||
# массив передаётся целиком, поэтому старые значения перезаписываются
|
||
vip_configure = jsonencode([
|
||
{
|
||
name = var.ip_space_name
|
||
count = var.ip_count
|
||
}
|
||
])
|
||
|
||
# при destroy: false — квота обнуляется (count=0); true — оставить как есть
|
||
keep_on_destroy = false
|
||
|
||
depends_on = [nubes_vc_nsxt.edge]
|
||
}
|
||
|
||
# 2. SNAT на шлюзе: внешние адреса для машин.
|
||
resource "nubes_vc_nsxt_snat" "snat" {
|
||
# UUID шлюза, созданного выше
|
||
nsxt_uid = nubes_vc_nsxt.edge.id
|
||
ip_space_name = var.ip_space_name
|
||
|
||
# при destroy: false — SNAT выключается (no-needed); true — оставить как есть
|
||
keep_on_destroy = false
|
||
|
||
# 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
|
||
}
|