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

如何通过mrparkers/keycloak Provider从组名获取Keycloak组ID

解决Terraform中Keycloak组UUID获取问题

我使用Terraform的mrparkers/keycloak Provider配置Keycloak用户,已成功创建用户'hellfire'和组'mrpc-admins',但在使用keycloak_group_memberships资源时,group_id字段需要Keycloak生成的组UUID而非组名,特此寻求解决方法。

现有变量定义

variable "mrpc-groups" {
    type = map(object({
        name = string
        realm = string
    }))
    default = {
        "10001" = {
            name = "mrpc-admins"
            realm = "mrpc"
        }
    }
}

variable "mrpc-users" {
    type = map(object({
        username = string
        email = string
        first_name = string
        last_name = string
        realm = string
        group = string
    }))
    default = {
        "10001" = {
            username = "hellfire"
            email = "bla@bla.bla"
            first_name = "hell"
            last_name = "fire"
            realm = "mrpc"
            group = "mrpc-admins"
        }
    }
}

现有资源定义

resource "keycloak_realm" "realm" {
  realm = "mrpc"
}

resource "keycloak_group" "group" {
  for_each = var.mrpc-groups

  realm_id = keycloak_realm.realm.id
  name     = each.value["name"]
}

resource "keycloak_user" "user" {
  for_each = var.mrpc-users

  realm_id    = each.value["realm"]
  username    = each.value["username"]
  email       = each.value["email"]
  first_name  = each.value["first_name"]
  last_name   = each.value["last_name"]
}

修正后的keycloak_group_memberships资源

你需要通过Terraform内置表达式,从已创建的keycloak_group资源中匹配组名获取UUID,同时注意members字段需要传入用户UUID而非用户名:

resource "keycloak_group_memberships" "group_members" {
  for_each = var.mrpc-users

  realm_id = each.value["realm"]
  # 通过组名匹配对应的group资源,获取其UUID
  group_id = [for g in keycloak_group.group : g.id if g.name == each.value.group][0]
  # 使用用户资源的id作为members值
  members  = [keycloak_user.user[each.key].id]
}

说明

  1. 获取组UUID:使用for表达式遍历所有keycloak_group.group实例,筛选出名称与用户指定组名匹配的实例,取其id(即Keycloak生成的UUID)。
  2. 修正用户成员值:keycloak_group_memberships的members字段要求传入用户UUID,而非用户名,因此直接引用keycloak_user.user[each.key].id即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:51:56