modules/github/team.tf (29 lines of code) (raw):

locals { approvers = [for user in data.github_organization.alz.users : { login = user.login email = user.email } if contains(var.approvers, user.email)] invalid_approvers = setsubtract(var.approvers, local.approvers[*].email) } resource "github_team" "alz" { name = var.team_name description = "Approvers for the Landing Zone Terraform Apply" privacy = "closed" lifecycle { precondition { condition = length(local.invalid_approvers) == 0 error_message = "At least one approver has not been supplied with a valid email. Invalid approvers: ${join(", ", local.invalid_approvers)}" } } } resource "github_team_membership" "alz" { for_each = { for approver in local.approvers : approver.login => approver } team_id = github_team.alz.id username = each.value.login role = "member" } resource "github_team_repository" "alz" { team_id = github_team.alz.id repository = github_repository.alz.name permission = "push" }