You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform:如何在for_each循环中实现变量自增?

为Okta应用组分配设置递增的Priority值

在使用Terraform管理Okta应用组分配时,需要为每个组设置递增的priority值(如1、2、3...),但由于data.okta_groups.all_groups是通过for_each生成的对象类型,无法直接使用index函数获取位置,尝试本地变量自增也没成功,以下是可行的实现方法。

实现步骤

  1. 先通过本地变量对data.okta_groups.all_groups的键进行排序,生成一个有序的键列表,确保每次执行的顺序一致。
  2. 在okta_app_group_assignments资源中,利用index函数获取当前each.key在有序列表中的位置,再加1得到从1开始的递增priority值。

代码示例

首先添加本地变量块,生成有序的组键列表:

locals {
  # 对data.okta_groups.all_groups的键按字典序排序,生成稳定的有序列表
  sorted_group_keys = sort(keys(data.okta_groups.all_groups))
}

然后修改okta_app_group_assignments资源,设置递增的priority:

resource "okta_app_group_assignments" "idc_app_assignments" {
  app_id   = okta_app_saml.aws_identity_center.id
  for_each = data.okta_groups.all_groups

  group {
    id       = each.value.groups.0.id
    # 通过index获取当前key在有序列表中的索引,加1得到从1开始的priority值
    priority = index(local.sorted_group_keys, each.key) + 1
  }
}

说明

  • sort(keys(data.okta_groups.all_groups))会将对象的键按字典序排序,生成一个稳定的有序列表,避免每次Terraform运行时键的顺序变化导致priority值变动。
  • index(local.sorted_group_keys, each.key)返回当前键在有序列表中的索引(从0开始),加1后就得到了从1开始的连续递增priority值。

内容的提问来源于stack exchange,提问作者Thrupthi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:42:16