地形插值

时间:2019-11-14 12:15:51

标签: terraform

我想知道您是否可以提供帮助或建议,我在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))}”

如何解决此问题?

0 个答案:

没有答案