# ============================================================================= # Пример: доменные зоны компании и записи в них — через 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 }