簡體   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