main.roleassignment.tf (40 lines of code) (raw):

# The roleassignments module creates role assignments from the data # supplied in the var.role_assignments variable module "roleassignment" { source = "./modules/roleassignment" depends_on = [ module.resourcegroup, module.subscription, module.usermanagedidentity, module.virtualnetwork, ] for_each = { for k, v in var.role_assignments : k => v if var.role_assignment_enabled } role_assignment_principal_id = each.value.principal_id role_assignment_definition = each.value.definition role_assignment_scope = "${local.subscription_resource_id}${each.value.relative_scope}" role_assignment_condition = each.value.condition role_assignment_condition_version = each.value.condition_version } resource "time_sleep" "wait_for_umi_before_umi_role_assignment_operations" { count = length(local.user_managed_identity_role_assignments) > 0 ? 1 : 0 create_duration = var.wait_for_umi_before_umi_role_assignment_operations.create destroy_duration = var.wait_for_umi_before_umi_role_assignment_operations.destroy depends_on = [ module.usermanagedidentity ] } # The roleassignments_umi module creates role assignments from the data # supplied in the var.user_managed_identities object role_assignments property module "roleassignment_umi" { source = "./modules/roleassignment" depends_on = [ module.resourcegroup, module.subscription, time_sleep.wait_for_umi_before_umi_role_assignment_operations, module.virtualnetwork, ] for_each = local.user_managed_identity_role_assignments role_assignment_principal_id = each.value.principal_id role_assignment_definition = each.value.definition role_assignment_scope = each.value.scope role_assignment_condition = each.value.condition role_assignment_condition_version = each.value.condition_version role_assignment_principal_type = each.value.principal_type role_assignment_definition_lookup_enabled = each.value.definition_lookup_enabled }