Как создать несколько частных зон DNS, а затем в каждой зоне создать несколько частных виртуальных ссылок DNS, используя для каждого цикла в terraform azure

создайте несколько частных зон DNS, а затем в каждой зоне создайте несколько частных виртуальных ссылок DNS, используя для каждого цикла в terraform azure. и я не могу создать несколько виртуальных сетевых ссылок в каждой зоне.

variable "privateDnsZones" {
  type = map(object({
    virtualNetworksID = list(string)
  }))
  default = {
    "privatelink.monitor.azure.com" = {
      virtualNetworksID = [
        "",
        ""
      ]
    },
    "privatelink.oms.opinsights.azure.com" = {
      virtualNetworksID = [
        "",
        ""
      ]
    }
  }
}

resource "azurerm_private_dns_zone" "privateDnsZone" {
  for_each            = var.privateDnsZones
  name                = each.key
  resource_group_name = data.azurerm_resource_group.existing_RG.name
  tags                = var.resource_tags
  
}

resource "azurerm_private_dns_zone_virtual_network_link" "privateDnsZone_link" {
    for_each =
  name                  = 
  resource_group_name   = 
  private_dns_zone_name = 
  virtual_network_id    = 
}

на каждый что? Что ты просматриваешь?

Sam Cogan 11.04.2023 12:20

Попробуйте использовать flatten, а затем используйте foreach для ссылок vnet на этой структуре flattend developer.hashicorp.com/terraform/language/functions/…

silent 11.04.2023 12:35

Привет всем, я хочу создать несколько частных зон DNS, а затем в каждой зоне создать несколько частных виртуальных ссылок DNS, используя для каждого цикла в terraform azure.

Mr.cool 11.04.2023 12:39
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
113
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Без проверки это должно работать примерно так:

locals {
  # flatten ensures that this local value is a flat list of objects, rather
  # than a list of lists of objects.
  zones_vnets = flatten([
    for zone_key, zone in var.privateDnsZones: [
      for vnetId in zone.virtualNetworksID : {
        zoneId = azurerm_private_dns_zone.privateDnsZone[zone_key].id
        vnetId = vnetId
      }
    ]
  ])
}

resource "azurerm_private_dns_zone_virtual_network_link" "privateDnsZone_link" {
  for_each = {
    for zone in local.zones_vnets: "${zone.zoneId}.${zone.vnetId}" => zoneLink
  }
  name                  = each.key
  resource_group_name   = "foobar-rg"
  private_dns_zone_name = each.value.zoneId
  virtual_network_id    = each.value.vnetId
}

Ошибка: неверная ссылка │ │ в строке 72 main.tf, в ресурсе "azurerm_private_dns_zone_virtual_network_link" "privateDnsZone_link": │ 72: для зоны в local.zones_vnets: "${zone.zoneId}.${zone.vnetId}" => zoneLink │ │ За ссылкой на тип ресурса должен следовать хотя бы один доступ к атрибуту, указывающий имя ресурса.

Mr.cool 11.04.2023 14:20

рад это слышать @shubhampandey, пожалуйста, примите ответ (и проголосуйте, если хотите :))

silent 12.04.2023 12:26

Другие вопросы по теме