Azure,terraform报告在创建内部负载平衡器时,网络接口id必须是单个值,而不是列表

Azure,terraform报告在创建内部负载平衡器时,网络接口id必须是单个值,而不是列表,terraform,azure-virtual-machine,terraform-provider-azure,azure-load-balancer,Terraform,Azure Virtual Machine,Terraform Provider Azure,Azure Load Balancer,我得到的错误如下: Error: azurerm_network_interface_backend_address_pool_association.tf-nilb-erx-sqlcl1[0]: network_interface_id must be a single value, not a list Error: azurerm_network_interface_backend_address_pool_association.tf-nilb-erx-sqlcl1[1]: netwo

我得到的错误如下:

Error: azurerm_network_interface_backend_address_pool_association.tf-nilb-erx-sqlcl1[0]: network_interface_id must be a single value, not a list

Error: azurerm_network_interface_backend_address_pool_association.tf-nilb-erx-sqlcl1[1]: network_interface_id must be a single value, not a list
地形代码如下:

resource "azurerm_network_interface_backend_address_pool_association" "tf-nilb-erx-sqlcl1" {
  count                   = "${var.count_sqlcl1_vm}"
  network_interface_id    = ["${element(azurerm_network_interface.tf-ni-erx-sqlcl1.*.id, count.index)}"]
  ip_configuration_name   = "erx-sha-pre-sqlcl1-fip-au-se"
  backend_address_pool_id = "${azurerm_lb_backend_address_pool.tf-bep-erx-sqlcl1.id}"
}
resource "azurerm_network_interface_backend_address_pool_association" "tf-nilb-erx-sqlcl2" {
  count                   = "${var.count_sqlcl2_vm}"
  network_interface_id    = ["${element(azurerm_network_interface.tf-ni-erx-sqlcl2.*.id, count.index)}"]
  ip_configuration_name   = "erx-sha-pre-sqlcl2-fip-au-se"
  backend_address_pool_id = "${azurerm_lb_backend_address_pool.tf-bep-erx-sqlcl2.id}"
}
基本上,我想在两个不同的可用性集中创建一个SQL VM集群。一旦对它们进行了配置,它们每个都需要一个内部负载平衡器

网络接口代码如下:

resource "azurerm_network_interface" "tf-ni-erx-sqlcl1" {
 count               = "${var.count_sqlcl1_vm}"
 name                = "${var.sql_base_hostname}${format("%02d",count.index+1)}-nic01"
 location            = "${data.azurerm_resource_group.tf-rg-erx-external.location}"
 resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}"

ip_configuration {
    name                          = "${var.sql_base_hostname}${format("%02d",count.index+1)}-iip01"
    subnet_id                     = "${data.azurerm_subnet.tf-sn-erx-sql.id}"
    private_ip_address_allocation = "${var.env=="msdn"?"dynamic":"static"}"
    private_ip_address            ="10.112.3.${count.index+10}"
}
}

resource "azurerm_network_interface" "tf-ni-erx-sqlcl2" {
 count               = "${var.count_sqlcl2_vm}"
 name                = "${var.sql_base_hostname}${format("%02d",count.index+1)}-nic01"
 location            = "${data.azurerm_resource_group.tf-rg-erx-external.location}"
 resource_group_name = "${data.azurerm_resource_group.tf-rg-erx-external.name}"

ip_configuration {
    name                          = "${var.sql_base_hostname}${format("%02d",count.index+1)}-iip01"
    subnet_id                     = "${data.azurerm_subnet.tf-sn-erx-sql.id}"
    private_ip_address_allocation = "${var.env=="msdn"?"dynamic":"static"}"
    private_ip_address            ="10.112.3.${count.index+15}"
}
}
是的,删除[并]使其工作,但让我想知道的是,为什么下面的代码在我们使用[]时工作

resource "azurerm_virtual_machine" "tf-vm-erx-sqlcl1" {
  count                 = "${var.count_sqlcl1_vm}"
  name                  = "${var.sql_base_hostname}${format("%02d",count.index+1)}"
  location              = "${data.azurerm_resource_group.tf-rg-erx-external.location}"
  resource_group_name   = "${data.azurerm_resource_group.tf-rg-erx-external.name}"
  availability_set_id   = "${azurerm_availability_set.tf-as-erx-sqlcl1.id}"
  network_interface_ids = ["${element(azurerm_network_interface.tf-ni-erx-sqlcl1.*.id, count.index)}"]
  vm_size               = "${var.sqldbs_vm_size}"
我想我们使用方括号,只要有一个计数

如果我错了,请纠正我

谢谢,错误显示如下:

网络接口id必须是单个值,而不是列表


[“${element(azurerm_network_interface.tf-ni-erx-sqlcl1.*.id,count.index)}”]
表示一个列表。因此,您只需将其设置为
网络接口\u id=“${element(azurerm\u network\u interface.tf-ni-erx-sqlcl1.*.id,count.index)}”

您可以尝试设置
网络接口\u id=“${element(azurerm\u network\u interface.tf-ni-erx-sqlcl1.*.id,count.index)}”
@CharlesXu工作起来很有魅力,在我们将其设置为关闭之前,我有一个疑问要问您。请给我大约3-4个小时,我们可以将此设置为已解决,以便社区将从中受益。不知您是否可以指导我了解我在本文中添加的其他信息question@learner在这里回答你。当您使用count属性时,它意味着一个循环,而在echo循环中,只有一个成员。好的,因此,在azurerm_网络接口后端地址池关联中,我们也使用了计数,为什么不使用方括号?@learner
网络接口id
azurerm_虚拟机中显示一个列表,而
网络接口id
azurerm\u网络\u接口\u后端\u地址\u池\u关联
。啊!现在说得通了!谢谢你。