我想知道您是否可以提供帮助或建议,我在Terraform上遇到了问题
这是我的问题
我们必须创建许多网络接口,每种环境在0到4等范围内都会有所不同,这里是一些示例
Production = palo_pubic_nic_no = ["public","prod", "stage"]
Sbox = palo_pubic_nic_no = []
Dev palo_pubic_nic_no = ["public"]
这里是根据每个环境创建所需网络接口数量的资源
resource "azurerm_network_interface" "nic_transit_aks" {
count = length(var.palo_pubic_nic_no)
name = "${var.vnet_name}-nic-aks-${var.palo_pubic_nic_no[count.index]}"
location = "${azurerm_resource_group.rg_firewall.location}"
resource_group_name = "${azurerm_resource_group.rg_firewall.name}"
enable_ip_forwarding = "true"
ip_configuration {
name = "${var.vnet_name}-nic-aks-${var.palo_pubic_nic_no[count.index]}-ip"
subnet_id = "${var.subnet_transit_public_id}"
private_ip_address_allocation = "dynamic"
}
}
下一步是您需要将这些NIC与虚拟机相关联
这是VM资源的NIC部分
primary_network_interface_id = "${element(azurerm_network_interface.nic_mgmt..id, count.index)}"
network_interface_ids = [
"${element(azurerm_network_interface.nic_mgmt..id, count.index)}",
"${element(azurerm_network_interface.nic_transit_public..id, count.index)}",
"${element(azurerm_network_interface.nic_transit_private..id, count.index)}",
"${element(azurerm_network_interface.nic_transit_aks.*.id, count.index)}"
]
现在是问题所在,当使用element和count.index时,它会使用虚拟机中的Count资源而不是网络接口资源(如果有意义), 由于虚拟机计数设置为1,因此只会为虚拟机分配1 AKS nic。
此外,由于网卡的数量根据环境的不同,从0到3不等,所以我无法像这样对网卡进行硬编码
azurerm_network_interface.nic_transit_aks.0.id
azurerm_network_interface.nic_transit_aks.1.id
azurerm_network_interface.nic_transit_aks.2.id
我也尝试过
只是azurerm_network_interface.nic_transit_aks..id 尝试过的长度函数和引用的长度(var.palo_pubic_nic_no),它不喜欢 “ $ {length(var.palo_pubic_nic_no,element(azurerm_network_interface.nic_transit_aks..id,count.index))}”
如何解决此问题?