Skip to content

Commit b636132

Browse files
authored
Merge pull request #43 from empathyco/main
Fix some loops only picking up one element from the list
2 parents c7467e0 + 545ffe4 commit b636132

File tree

3 files changed

+40
-46
lines changed

3 files changed

+40
-46
lines changed

locals.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,9 @@ locals {
22
sso_permission_sets = var.sso_permission_sets
33
organization_config = var.organization_config
44
enable_sso = var.enable_sso
5+
accounts = flatten([
6+
for unit_name, unit in local.organization_config["units"] : [
7+
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : local.organization_config["units"][unit_name]["accounts"][account_name]
8+
]
9+
])
510
}

sso.tf

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ data "aws_ssoadmin_instances" "ssoadmin_instances" {}
33
data "aws_identitystore_group" "aws" {
44
for_each = local.enable_sso ? toset(
55
flatten([
6-
for account in flatten([
7-
for unit_name, unit in local.organization_config["units"] : [
8-
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : local.organization_config["units"][unit_name]["accounts"][account_name]
9-
]
10-
]) : keys(lookup(account, "group_assignments", {}))
6+
for account in local.accounts : keys(lookup(account, "group_assignments", {}))
117
])
128
) : toset([])
139

@@ -24,11 +20,7 @@ data "aws_identitystore_group" "aws" {
2420
data "aws_identitystore_user" "aws" {
2521
for_each = local.enable_sso ? toset(
2622
flatten([
27-
for account in flatten([
28-
for unit_name, unit in local.organization_config["units"] : [
29-
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : local.organization_config["units"][unit_name]["accounts"][account_name]
30-
]
31-
]) : keys(lookup(account, "user_assignments", {}))
23+
for account in local.accounts : keys(lookup(account, "user_assignments", {}))
3224
])
3325
) : toset([])
3426

@@ -53,16 +45,14 @@ resource "aws_ssoadmin_permission_set" "permission_set" {
5345
}
5446

5547
resource "aws_ssoadmin_managed_policy_attachment" "attachment" {
56-
for_each = local.enable_sso ? {
57-
for attachment in flatten([
58-
for permission_set_name, permission_set in local.sso_permission_sets : {
59-
for managed_policy_name in lookup(permission_set, "managed_policies", []) : "${permission_set_name}_${managed_policy_name}" => {
60-
permission_set_name = permission_set_name
61-
managed_policy_name = managed_policy_name
62-
}
48+
for_each = local.enable_sso ? merge([
49+
for permission_set_name, permission_set in local.sso_permission_sets : {
50+
for managed_policy_name in permission_set["managed_policies"] : "${permission_set_name}_${managed_policy_name}" => {
51+
permission_set_name = permission_set_name
52+
managed_policy_name = managed_policy_name
6353
}
64-
]) : keys(attachment)[0] => attachment[keys(attachment)[0]]
65-
} : {}
54+
}
55+
]...) : {}
6656

6757
instance_arn = tolist(data.aws_ssoadmin_instances.ssoadmin_instances.arns)[0]
6858
managed_policy_arn = "arn:aws:iam::aws:policy/${each.value["managed_policy_name"]}"
@@ -82,21 +72,19 @@ resource "aws_ssoadmin_permission_set_inline_policy" "policy" {
8272
}
8373

8474
resource "aws_ssoadmin_account_assignment" "group_assignment" {
85-
for_each = local.enable_sso ? {
86-
for assignment in flatten([
87-
for unit_name, unit in local.organization_config["units"] : [
88-
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : [
89-
for group_name, group_assignments in lookup(local.organization_config["units"][unit_name]["accounts"][account_name], "group_assignments", {}) : {
90-
for permission_set in group_assignments["permission_sets"] : "${account_name}_${group_name}_${permission_set}" => {
91-
account_name = account_name
92-
group_name = group_name
93-
permission_set = permission_set
94-
}
75+
for_each = local.enable_sso ? merge(flatten([
76+
for unit_name, unit in local.organization_config["units"] : [
77+
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : [
78+
for group_name, group_assignments in lookup(local.organization_config["units"][unit_name]["accounts"][account_name], "group_assignments", {}) : {
79+
for permission_set in group_assignments["permission_sets"] : "${account_name}_${group_name}_${permission_set}" => {
80+
account_name = account_name
81+
group_name = group_name
82+
permission_set = permission_set
9583
}
96-
]
84+
}
9785
]
98-
]) : keys(assignment)[0] => assignment[keys(assignment)[0]]
99-
} : {}
86+
]
87+
])...) : {}
10088

10189
instance_arn = aws_ssoadmin_permission_set.permission_set[each.value["permission_set"]].instance_arn
10290
permission_set_arn = aws_ssoadmin_permission_set.permission_set[each.value["permission_set"]].arn
@@ -109,21 +97,19 @@ resource "aws_ssoadmin_account_assignment" "group_assignment" {
10997
}
11098

11199
resource "aws_ssoadmin_account_assignment" "user_assignment" {
112-
for_each = local.enable_sso ? {
113-
for assignment in flatten([
114-
for unit_name, unit in local.organization_config["units"] : [
115-
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : [
116-
for user_name, user_assignments in lookup(local.organization_config["units"][unit_name]["accounts"][account_name], "user_assignments", {}) : {
117-
for permission_set in user_assignments["permission_sets"] : "${account_name}_${user_name}_${permission_set}" => {
118-
account_name = account_name
119-
user_name = user_name
120-
permission_set = permission_set
121-
}
100+
for_each = local.enable_sso ? merge(flatten([
101+
for unit_name, unit in local.organization_config["units"] : [
102+
for account_name in keys(local.organization_config["units"][unit_name]["accounts"]) : [
103+
for user_name, user_assignments in lookup(local.organization_config["units"][unit_name]["accounts"][account_name], "user_assignments", {}) : {
104+
for permission_set in user_assignments["permission_sets"] : "${account_name}_${user_name}_${permission_set}" => {
105+
account_name = account_name
106+
user_name = user_name
107+
permission_set = permission_set
122108
}
123-
]
109+
}
124110
]
125-
]) : keys(assignment)[0] => assignment[keys(assignment)[0]]
126-
} : {}
111+
]
112+
])...) : {}
127113

128114
instance_arn = aws_ssoadmin_permission_set.permission_set[each.value["permission_set"]].instance_arn
129115
permission_set_arn = aws_ssoadmin_permission_set.permission_set[each.value["permission_set"]].arn

versions.tf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
terraform {
22
required_version = ">= 1.1.5"
33
required_providers {
4-
aws = "~> 5.0"
4+
aws = {
5+
source = "hashicorp/aws"
6+
version = ">= 5.0"
7+
}
58
}
69
}

0 commit comments

Comments
 (0)