繁体   English   中英

Terraform - 在 for_each 循环中增加一个变量

[英]Terraform - Increment a Variable in a for_each Loop

我正在尝试找出一种向资源添加递增数字的方法。

这是我的代码片段。 我想将优先级设为递增数字,而不是传入固定数字。

当前代码


resource "azurerm_firewall_network_rule_collection" "netrc" {
   for_each            = {for network_rule_collection in var.network_rule_collections: network_rule_collection.name => network_rule_collection}
   name                = "netrc-${each.key}"
   azure_firewall_name = var.afw_name
   resource_group_name = var.resource_group_name
   priority            = var.priority
   action              = each.value.action

基本上,我想看起来像这样:

     priority            = (each.index *  10) + 140

我尝试使用each.key ,但在这个模块中, each.key 是一个字符串。

我也尝试了一个计数器,但你不能将一个计数器与一个 for_each 循环结合起来。

有什么想法或建议吗?

编辑

我最终使用了下面建议的索引。

  priority            = (index(var.application_rule_collections, each.value) + 100)

一种方法是预先计算优先级:

locals {
  priorities = {
          for idx, network_rule_collection in var.network_rule_collections: 
              network_rule_collection.name => idx * 10 + 140
          }
}

然后

resource "azurerm_firewall_network_rule_collection" "netrc" {
   for_each            = {for network_rule_collection in var.network_rule_collections: network_rule_collection.name => network_rule_collection}
   name                = "netrc-${each.key}"
   azure_firewall_name = var.afw_name
   resource_group_name = var.resource_group_name
   priority            = local.priorities[each.key]
   action              = each.value.action

我认为您可以尝试使用索引

priority = index(var.network_rule_collections, each.value)  + 140

PS:您可能需要对其进行修改,仅作为示例

我最终按照建议使用了索引。

priority            = (index(var.application_rule_collections, each.value) + 100)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM