I want to create a resources base on this yaml file this is related to squadcast Terraform Registry
TEAM1:
- user: test@gmail.com
roles:
- User
- user: hello@gmail.com
roles:
- User
- Admin
but how to achive this in terraform can anyone help? i have tried with local blocks but not get the similar output
locals {
membership_nested = yamldecode(file("${path.module}/test.yaml"))
membership_flat = distinct(flatten(
[
for team_key, team in local.membership_nested : [
for user in team : {
team_name = team_key
user_name = user.user
roles = user.roles
}
]
]
))
resource block
resource "squadcast_team_member" "membership" {
for_each = { for i, v in local.membership_flat : i => v }
team_id = data.squadcast_team.team_name[each.key].id
user_id = data.squadcast_user.user_name[each.key].id
role_ids = [data.squadcast_team_role.role_name[each.key].id]
}
data "squadcast_team" "team_name" {
for_each = { for i, v in local.membership_flat : i => v }
name = each.value.team_name
}
data "squadcast_user" "user_name" {
for_each = { for i, v in local.membership_flat : i => v }
email = each.value.user_name
}
data "squadcast_team_role" "role_name" {
for_each = { for role in each.value.roles : role => role }
name = each.value.roles
team_id = data.squadcast_team.team_name[each.key].id
}
error :
name = each.value.roles
is tuple with 2 elements
expected output
Changes to Outputs:
+ membership = [
+ {
+ roles = [
+ "User",
]
+ team_name = "team1"
+ user_name = "test@gmail.com"
},
+ {
+ roles = [
+ "User",
+ "Admin",
]
+ team_name = "team1"
+ user_name = "hello@gmail.com"
},
]