我正在尝试创建代码来创建天蓝色的私有DNS区域和虚拟网络链接。我正在尝试创建2个变量,其中1个带有私有DNS区域列表,另一个带有我们的虚拟网络资源ID列表。我可以成功运行代码,但是我的问题是,如果我要添加任何虚拟网络,则现有的网络对等节点希望被销毁并重新创建。尽管这些将重新产生良好效果,但我正在努力避免它们被破坏,因为这可能会导致服务问题。我对terraform相当陌生,因此任何指针都将对您有所帮助。我认为我的问题在count语句内,但不确定如何解决。
main.tf
terraform {
required_version = ">= 0.12"
}
provider "azurerm" {
version = ">= 2.0"
features {}
}
resource "random_id" "random" {
count = length(var.private_zones) * length (var.linked_virtual_networks)
byte_length = 2
}
resource "azurerm_resource_group" "privatezones" {
name = "it-eastus-prod-privatedns"
location = "eastus"
tags = var.tags
}
resource azurerm_private_dns_zone private_dns {
count = length(var.private_zones)
name = var.private_zones[count.index]
resource_group_name = azurerm_resource_group.privatezones.name
tags = var.tags
}
resource "azurerm_private_dns_zone_virtual_network_link" "example" {
count = length(var.private_zones) * length (var.linked_virtual_networks)
name = "vnet-${random_id.random.*.dec[count.index]}"
resource_group_name = azurerm_resource_group.privatezones.name
private_dns_zone_name = azurerm_private_dns_zone.private_dns[floor(count.index/length (var.linked_virtual_networks))].name
virtual_network_id = var.linked_virtual_networks[count.index % length (var.linked_virtual_networks)]
tags = var.tags
}
variables.tf
variable private_zones {
type = list(string)
description = "List of private dns zones to be created"
default = [
"privatelink.database.windows.net",
"privatelink.vaultcore.azure.net",
#"privatelink.eastus.azmk8s.io",
# "privatelink.westus.azmk8s.io",
# "privatelink.blob.core.windows.net",
# "privatelink.table.core.windows.net",
# "privatelink.queue.core.windows.net",
# "privatelink.file.core.windows.net",
# "privatelink.web.core.windows.net"
]
}
variable linked_virtual_networks {
type = list(string)
description = "List of linked virtual networks"
default = [
"/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/xxx",
"/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/xxx",
]
}
variable "tags" {
description = "tags"
default = {
"applicationname" = "DNS"
"creationdate" = "7/27/2020"
"creator" = "name"
"environment" = "Production"
"owner" = "Net"
}
}