首页 > 解决方案 > 我创建了 4 个子网并创建了输出值以在一个变量中获取所有子网 id。那么我如何计划检索 2 个值以附加 nics

问题描述

错误:括号不平衡

在 .terraform\modules\nics\main.tf 第 19 行,在资源“azurerm_network_interface”“NIC1”中:19:subnet_id = “${element(var.subnetwork-subnetid.*.id, (0,1))}”

子网的输出值:

output "subnetwork-subnetid" {
  value = concat(azurerm_subnet.subnetwork.*.id, azurerm_subnet.subnetwork6.*.id)
}

网卡.tf

resource "azurerm_network_interface" "NIC1" {
  #count = "${length(var.subnetwork-subnetid)}"
  #for_each= toset(var.subipv4)
  count = "${length(var.subipv4)}"
  name  = "${lookup(element(var.subipv4, count.index), "name")}"
  #name                = var.nic-name
  location                      = var.rg-location
  resource_group_name           = var.rg-name
  enable_ip_forwarding          = true
  enable_accelerated_networking = true
  ip_configuration {
    name                          = "ipconfig"
    subnet_id                     = "${element(var.subnetwork-subnetid.*.id, (0,1))}"
    private_ip_address_allocation = "Dynamic"
    #public_ip_address_id          = azurerm_public_ip.pubip.id
    #public_ip_address_id = azurerm_public_ip.pubip.*.id
    primary = true
  }
  tags = {
    name = "${lookup(element(var.subipv4, count.index), "name")}"
  }
}```

Please someone help me in this issue.Thanks!

标签: azureterraform

解决方案


元素中的第二个参数是index

index 查找特定元素值的索引。

因此,要根据索引从列表中获取少量元素,您可以执行以下操作:

subnet_id = [ for idx in [0, 1]: element(var.subnetwork-subnetid.*.id, idx) ]

如果你想要一系列独立,你可以使用slice

subnet_id = slice(var.subnetwork-subnetid.*.id, 0, 2)

推荐阅读