如何使用 Terraform 创建多个 Azure 广告用户?
How to create multiple azure ad users using terraform?
我正在尝试使用 terraform 创建多个用户。现在我将它们声明为本地人,但稍后我将使用 json 文件在我的 azuread 环境中创建多个用户。
这是我声明本地人的方式:
locals {
users = [
[
"user1",
"Example User1",
"Password@1234#"
],
[
"user2",
"Example User2",
"Password@09876#"
]
]
}
但是当我使用下面的代码时出现错误:
resource "azuread_user" "test" {
for_each = local.users
user_principal_name = "${each.value[0]}@tenantname.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]
}
错误:
╷
│ Error: Invalid for_each argument
│
│ on main.tf line 18, in resource "azuread_user" "test":
│ 18: for_each = local.users
│ ├────────────────
│ │ local.users is tuple with 2 elements
│
│ The given "for_each" argument value is unsuitable: the "for_each" argument must be a map, or set of strings, and you have provided a value of type tuple.
╵
非常感谢任何有关如何解决此问题的帮助?
您必须将其转换为地图:
resource "azuread_user" "test" {
for_each = {for idx, user in local.users: idx => user}
user_principal_name = "${each.value[0]}@M365B109047.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]
}
正如另一个答案中告诉您的那样,您需要它是一张地图,但在另一个答案中执行 for 之前,它将使用 terraform 自己的 tomap () 函数。
resource "azuread_user" "test" {
for_each = tomap({users=local.users})
user_principal_name = "${each.value[0]}@M365B109047.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]
我正在尝试使用 terraform 创建多个用户。现在我将它们声明为本地人,但稍后我将使用 json 文件在我的 azuread 环境中创建多个用户。
这是我声明本地人的方式:
locals {
users = [
[
"user1",
"Example User1",
"Password@1234#"
],
[
"user2",
"Example User2",
"Password@09876#"
]
]
}
但是当我使用下面的代码时出现错误:
resource "azuread_user" "test" {
for_each = local.users
user_principal_name = "${each.value[0]}@tenantname.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]
}
错误:
╷
│ Error: Invalid for_each argument
│
│ on main.tf line 18, in resource "azuread_user" "test":
│ 18: for_each = local.users
│ ├────────────────
│ │ local.users is tuple with 2 elements
│
│ The given "for_each" argument value is unsuitable: the "for_each" argument must be a map, or set of strings, and you have provided a value of type tuple.
╵
非常感谢任何有关如何解决此问题的帮助?
您必须将其转换为地图:
resource "azuread_user" "test" {
for_each = {for idx, user in local.users: idx => user}
user_principal_name = "${each.value[0]}@M365B109047.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]
}
正如另一个答案中告诉您的那样,您需要它是一张地图,但在另一个答案中执行 for 之前,它将使用 terraform 自己的 tomap () 函数。
resource "azuread_user" "test" {
for_each = tomap({users=local.users})
user_principal_name = "${each.value[0]}@M365B109047.OnMicrosoft.com"
display_name = each.value[1]
mail_nickname = each.value[0]
password = each.value[2]