我正在嘗試在 terraform 中決議這個變數。主要目標是創建“組”=“成員”型別的地圖。我在變數中設定的型別正確嗎?下面提供了所需的輸出。
variable "iam" "this"{
type = map(map(list(string)))
default = {
"admins" = {
"user" = [
"[email protected]",
"[email protected]"
]
"service_principal" = [
"dpaf2-dev-sa"
]
}
"dev" = {
"user" = [
"[email protected]",
"[email protected]"
]
"service_principal" = []
}
"ops" = {
"user" = [
"[email protected]",
]
"service_principal" = [
"dpaf2-dev-sa",
"dpaf2-iacda-app-id",
]
}
}
}
所需輸出:
{
"admins" = "[email protected]"
"admins" = "[email protected]"
"admins" = "dpaf2-dev-sa"
"dev" = "[email protected]"
"dev" = "[email protected]"
"ops" = "[email protected]"
"ops" = "dpaf2-dev-sa"
"ops" = "dpaf2-iacda-app-id"
}
uj5u.com熱心網友回復:
從這個開始并對其進行操作以滿足您的確切需求。有很多方法可以使用映射、陣列和嵌套來構造資源。
locals {
service_principal = {
admin = ["dpaf2-dev-sa"]
dev = []
ops = [
"dpaf2-dev-sa",
"dpaf2-iacda-app-id",
]
}
users = {
admin = [
"[email protected]",
"[email protected]"
]
dev = [
"[email protected]"
]
ops = [
"[email protected]"
]
}
result = flatten([for role in keys(local.users) : [for user in local.users[role] :
{ role = role, user = user, principals = local.service_principal[role] }]])
}
resource "null_resource" "users" {
count = length(local.result)
provisioner "local-exec" {
command = "echo user: $USER has role: $ROLE and principals: $SERVICE_PRINCIPAL >> ouput.txt"
environment = {
USER = local.result[count.index].user
ROLE = local.result[count.index].role
SERVICE_PRINCIPAL = join(", ", local.result[count.index].principals)
}
}
}
如果你運行:
terraform initterraform planterraform apply --auto-approve
然后檢查您的目錄中是否有一個名為 output.txt 的檔案,該檔案將包含
user:oleh_mykolaishyn@gmail.com has role:admin and principals: dpaf2-dev-sa
user:yevhen_plaksa@gmail.com has role:dev and principals:
user:oleksandr_gorkun@gmail.com has role:ops and principals: dpaf2-dev-sa, dpaf2-iacda-app-id
user:yevhen_plaksa@gmail.com has role:admin and principals: dpaf2-dev-sa
我知道文本檔案不是您想要的輸出,但回圈只是演示如何迭代區域變數。
同樣,有很多方法可以對其進行排序和切片。我避免了你想要的輸出,因為地圖不能有重復的鍵,所以它永遠不會作業。
如果您想單獨查看result,您可以執行以下操作:
terraform consolelocal.result
它會出現在終端中。退出控制臺型別exit。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504641.html
