Skip to content

Instantly share code, notes, and snippets.

@oasys
Created November 15, 2019 20:24
Show Gist options
  • Save oasys/85d77ffb76a6d9684cc473b27201f261 to your computer and use it in GitHub Desktop.
Save oasys/85d77ffb76a6d9684cc473b27201f261 to your computer and use it in GitHub Desktop.
variable "users" {
type = set(object({
username = string
role = string
teams = set(string)
}))
}
locals {
user_team_memberships = flatten([
for u in var.users : [
for t_id in u.teams : {
username = u.username
team_id = t_id
}
]
])
}
resource "github_membership" "users" {
for_each = { for u in var.users : u.username => u }
username = each.value.username
role = each.value.role
}
resource "github_team_membership "users" {
for_each = { for ut in local.user_team_memberships : "${ut.username}/${ut.team_id}" => ut }
depends_on = [github_membership.users] # can't create team memberships until org memberships are assigned
username = each.value.username
team_id = each.value.team_id
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment