1.Virtual.Network/private.dns.tf (30 lines of code) (raw):

############################################################################ # Private DNS (https://learn.microsoft.com/azure/dns/private-dns-overview) # ############################################################################ variable privateDNS { type = object({ zoneName = string autoRegistration = object({ enable = bool }) }) } resource azurerm_role_assignment private_dns_zone_contributor { role_definition_name = "Private DNS Zone Contributor" # https://learn.microsoft.com/azure/role-based-access-control/built-in-roles/networking#private-dns-zone-contributor principal_id = data.azurerm_user_assigned_identity.studio.principal_id scope = azurerm_private_dns_zone.studio.id } resource azurerm_private_dns_zone studio { name = var.privateDNS.zoneName resource_group_name = azurerm_resource_group.network.name } resource azurerm_private_dns_zone_virtual_network_link studio { for_each = { for virtualNetwork in local.virtualNetworks : virtualNetwork.key => virtualNetwork } name = each.value.key resource_group_name = azurerm_private_dns_zone.studio.resource_group_name private_dns_zone_name = azurerm_private_dns_zone.studio.name virtual_network_id = each.value.id registration_enabled = var.privateDNS.autoRegistration.enable depends_on = [ azurerm_virtual_network.studio ] }