Я хотел бы назначить участников в группы Azure Active Directory после их создания с помощью Terraform и ресурсов «azuread_group_member», «azuread_group» и «azuread_user».
Прежде всего, у меня есть CSV-файл, в котором есть связь между пользователями и отделами:
first_name,last_name,department
UserName1,LastName1,Department1
UserName2,LastName2,Department2
И другой файл CSV, содержащий группы:
department_name
Department1
Department2
Затем у меня есть локальная переменная, которая читает эти файлы CSV:
locals {
users = csvdecode(file("${path.module}/users.csv"))
groups = csvdecode(file("${path.module}/aad_groups.csv"))
}
Далее я создаю пользователей:
# Create users
resource "azuread_user" "users" {
for_each = { for user in local.users : user.first_name =\> user }
user_principal_name = format(
"%s@%s",
each.value.employee_id,
"mydomain.com"
)
}
Далее я создаю группы, повторяя файл groups.csv.
# Create groups resource
"azuread_group" "groups" {
for_each = { for group in local.groups : group.deparment_name => group }
display_name = each.value.deparment_name
security_enabled = true }
Но теперь я хотел бы назначить участников с "azuread_group_member" в группы, используя отношения, которые у меня есть в users.csv, в столбце "отдел"
Как мне это сделать?
Я создал пользователей и группы, как показано ниже.
locals {
users = {
"[email protected]" = { first_name = "John", last_name = "Doe" , password = "xxx@123",department = "Marketing Department" },
"[email protected]" = { first_name = "Jane", last_name = "Doe" , password = "xxx@123",department = "IT Department"}
}
}
locals {
groups = {
"Marketing Department" = { display_name = "Marketing Department" },
"Sales Department" = { display_name = "Sales Department" },
"IT Department" = { display_name = "IT Department" }
}
}
resource "azuread_user" "users" {
for_each = local.users
display_name = "${each.value.first_name} ${each.value.last_name}"
mail_nickname = each.value.first_name
user_principal_name = each.key
password = each.value.password
department = each.value.department
}
resource "azuread_group" "departments" {
for_each = local.groups
display_name = each.value.display_name
security_enabled = true
mail_enabled =false
}
Здесь обратите внимание, что значение группового ключа должно совпадать со значением отдела пользователя.
пример: Отдел маркетинга, что соответствует пользовательскому отделу John Doe.
resource "azuread_group_member" "group_members" {
for_each = local.users
group_object_id = azuread_group.departments[each.value.department].object_id
member_object_id = azuread_user.users[each.key].object_id
}
С помощью приведенного выше сопоставления я мог добавить пользователей в группы на основе их отдела.