main.role_assignments.tf (44 lines of code) (raw):

module "avm_interfaces" { for_each = var.management_group_role_assignments source = "Azure/avm-utl-interfaces/azure" version = "0.2.0" role_assignment_definition_lookup_enabled = var.role_assignment_definition_lookup_enabled role_assignment_definition_scope = provider::azapi::tenant_resource_id("Microsoft.Management/managementGroups", [each.value.management_group_name]) role_assignments = { this = { role_definition_id_or_name = each.value.role_definition_id_or_name principal_id = each.value.principal_id description = each.value.description skip_service_principal_aad_check = each.value.skip_service_principal_aad_check condition = each.value.condition condition_version = each.value.condition_version delegated_managed_identity_resource_id = each.value.delegated_managed_identity_resource_id principal_type = each.value.principal_type } } depends_on = [azapi_resource.role_definitions] enable_telemetry = var.enable_telemetry } resource "azapi_resource" "management_group_role_assignments" { for_each = module.avm_interfaces type = each.value.role_assignments_azapi.this.type body = each.value.role_assignments_azapi.this.body name = each.value.role_assignments_azapi.this.name parent_id = provider::azapi::tenant_resource_id("Microsoft.Management/managementGroups", [var.management_group_role_assignments[each.key].management_group_name]) retry = { error_message_regex = var.retries.role_assignments.error_message_regex interval_seconds = var.retries.role_assignments.interval_seconds max_interval_seconds = var.retries.role_assignments.max_interval_seconds multiplier = var.retries.role_assignments.multiplier randomization_factor = var.retries.role_assignments.randomization_factor } timeouts { create = var.timeouts.role_assignment.create delete = var.timeouts.role_assignment.delete read = var.timeouts.role_assignment.read update = var.timeouts.role_assignment.update } depends_on = [ azapi_resource.role_definitions, ] }