用于私有DNS和vnet链接的Azure Terraform

时间:2020-07-31 01:47:02

标签: terraform terraform-provider-azure

我正在尝试创建代码来创建天蓝色的私有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"
   }
 }

0 个答案:

没有答案