我們使用 terraform 創建了 okta 用戶和 okta 組
這是 variables.tf 用于用戶和組的變數串列物件
variable "users" {
type = list(object
({
first_name = string
last_name = string
email = string
organization = string
role = string
okta_admin = bool
}))
}
variable "groups" {
type = list(object
({
name = string
description = string
}))
}
這是 terraform.tfvars
groups = [
{ name = "dev", description = "This group for Devlopers" },
{ name = "qa", description = "This group for QA" },
{ name = "per", description = "This group for Per" }
]
users = [
{ first_name = "a", last_name = "a", email = "[email protected]", role = "Engineer", organization = "organization", okta_admin = true },
{ first_name = "b", last_name = "b", email = "[email protected]", role = "Lead", organization = "organization", okta_admin = true },
{ first_name = "c", last_name = "c", email = "[email protected]", role = "Devloper", organization = "organization", okta_admin = false },
]
這是 main.tf
獲取用于 for_each 的值
resource "okta_group" "groups" {
for_each = { for group in var.groups : join("-", [group.name, group.description]) => group }
name = each.value.name
description = each.value.description
}
resource "okta_user" "okta_user_add" {
for_each = { for user in var.users : join("-", [user.first_name, user.last_name]) => user }
title = each.value.role
email = each.value.email
first_name = each.value.first_name
last_name = each.value.last_name
login = each.value.email
organization = each.value.organization
}
當我們嘗試獲取 id 時,我們嘗試了多種方法,但對我們沒有用。無法獲取組 ID 和用戶 ID
resource "okta_group_memberships" "okta_member_group" {
for_each = okta_group.groups
group_id = each.value.id # I want only select one group
users = users = values(okta_user.okta_user_add)[*].id
}
我的問題是
okta_group_memberships.okta_member_group 我們有多個組,但我們只需要一個組即可添加到 okta_group_memberships。我們還添加特定用戶。我在tfvars檔案中提到。我們有用戶反對
okta_admin = true。我們只需要 okta_member_group 中需要的那些用戶
uj5u.com熱心網友回復:
要檢索所有組 id,您可以遍歷okta_user資源:
resource "okta_group_memberships" "okta_member_group" {
group_id = each.value.id
# Add all users to each group
users = values(okta_user.okta_user_add)[*].id
}
你的問題的問題是你沒有在任何地方指定哪個用戶屬于哪個組,所以我使用了一個splat運算式來獲取所有用戶的所有 id。
您應該創建一個單獨的輸入變數,以便將每個用戶映射到某個組。
編輯:
locals {
# get DEV group
dev_group = [for group in var.groups: group if group.name == "dev"][0]
# filter okta admins
okta_admins = [for user in var.users: join("-", [user.first_name, user.last_name]) if user.okta_admin]
}
resource "okta_group_memberships" "okta_member_group" {
# select only the DEV group
group_id = okta_group.groups[join("-", [local.dev_group.name, local.dev_group.description])].id
# get IDs of okta_admins only
users = [for okta_admin in local.okta_admins: okta_user.okta_user_add[okta_admin].id]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488472.html
上一篇:在forloop中創建多個物件
