首页 > 解决方案 > terraform 局部变量中的多个子网定义

问题描述

locals {
  fw-subnet-ids = var.env == "dev" || var.env == "qa" ? data.azurerm_subnet.storage-fw-subnets-lower[*].id : data.azurerm_subnet.storage-fw-subnets-upper[*].id
}

我使用fw-subnet-ids本地 var 并使用它来设置存储帐户资源的防火墙规则。我想更改此规则,以便现在
对于 dev 和 qa 都允许 ...lower[ ].id 和 ....upper[ ].id 仅允许 uat&prod ....upper[*].id 子网。

如何更新本地块以使其成为可能?

标签: azure-virtual-networkterraform-provider-azuresubnet

解决方案


对于此要求,您需要设置变量值的限制env,它必须是四个输入之一,dev, qa, uat, prod并且不能为空。然后你可以像这样改变当地人:

locals {
  fw-subnet-ids = var.env == "dev" || var.env == "qa" ? concat(data.azurerm_subnet.storage-fw-subnets-lower[*].id, data.azurerm_subnet.storage-fw-subnets-upper[*].id) : data.azurerm_subnet.storage-fw-subnets-upper[*].id
}

这意味着如果变量env是两者中的任何一个dev, qa,甚至两者都返回组合列表 ...lower[].id 和 ....upper[].id 的列表。如果变量env不是其中之一,它必须是其中之一uat, prod或两者,然后返回列表 ....upper[*].id。


推荐阅读