docs: примеры DNS-зон и записей (карта зон + N зон в цикле)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# =============================================================================
|
||||
# Пример: доменные зоны компании и записи в них — через Terraform.
|
||||
#
|
||||
# Ресурсы провайдера Nubes:
|
||||
# - nubes_zones_v2 (сервис 109) — DNS-зона;
|
||||
# - nubes_zones_v2_record (подресурс зоны, record) — запись внутри зоны.
|
||||
#
|
||||
# ⚠️ Имя поля в HCL = `name` из схемы (snake_case); `code` (camelCase) — имя в API.
|
||||
#
|
||||
# Зоны задаются картой `var.zones` (ключ → zone_name + records).
|
||||
# Чтобы добавить/убрать зону или запись — правьте `var.zones` и делайте `apply`.
|
||||
# =============================================================================
|
||||
|
||||
locals {
|
||||
# Плоская карта записей «зона:имя» (вложенный цикл → merge/flatten),
|
||||
# чтобы `for_each` у записей давал стабильные адреса.
|
||||
records = merge([
|
||||
for zk, z in var.zones : {
|
||||
for rk, r in z.records :
|
||||
"${zk}:${rk}" => {
|
||||
zone = zk
|
||||
name = rk
|
||||
type = r.type
|
||||
values = r.values
|
||||
}
|
||||
}
|
||||
]...)
|
||||
}
|
||||
|
||||
# Зоны: N штук из var.zones (for_each по ключам карты — стабильные адреса).
|
||||
resource "nubes_zones_v2" "zone" {
|
||||
for_each = var.zones
|
||||
resource_name = "dns-zone-${each.key}"
|
||||
zone_name = each.value.zone_name
|
||||
}
|
||||
|
||||
# Записи: record_input = [{record=<значение>}, ...] из списка values.
|
||||
resource "nubes_zones_v2_record" "record" {
|
||||
for_each = local.records
|
||||
zones_v2_id = nubes_zones_v2.zone[each.value.zone].id
|
||||
record_name = each.value.name
|
||||
record_type = each.value.type
|
||||
record_input = jsonencode([for v in each.value.values : { record = v }])
|
||||
record_ttl = 3600
|
||||
}
|
||||
Reference in New Issue
Block a user