main.tf (47 lines of code) (raw):

module "resource_group" { source = "Azure/avm-res-resources-resourcegroup/azurerm" version = "0.2.1" location = var.location name = var.resource_group_name tags = var.tags lock = var.lock role_assignments = var.role_assignments enable_telemetry = var.enable_telemetry } module "user_assigned_managed_identity" { source = "Azure/avm-res-managedidentity-userassignedidentity/azurerm" version = "0.3.3" location = var.location resource_group_name = module.resource_group.name name = var.user_assigned_managed_identity_name enable_telemetry = var.enable_telemetry } resource "azapi_resource" "role_assignments" { type = "Microsoft.Authorization/roleAssignments@2022-04-01" body = { properties = { principalId = module.user_assigned_managed_identity.principal_id roleDefinitionId = "/providers/Microsoft.Authorization/roleDefinitions/${var.role_definition_id}" description = var.description principalType = "ServicePrincipal" } } name = uuidv5("oid", "${var.role_definition_id}-${var.user_assigned_managed_identity_name}") parent_id = "/providers/Microsoft.Management/managementGroups/${var.root_management_group_name}" retry = var.retries.role_assignments.error_message_regex != null ? { error_message_regex = var.retries.role_assignments.error_message_regex interval_seconds = lookup(var.retries.role_assignments, "interval_seconds", null) max_interval_seconds = lookup(var.retries.role_assignments, "max_interval_seconds", null) multiplier = lookup(var.retries.role_assignments, "multiplier", null) randomization_factor = lookup(var.retries.role_assignments, "randomization_factor", null) } : null 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 } lifecycle { # https://github.com/Azure/terraform-provider-azapi/issues/671 ignore_changes = [output.properties.updatedOn] } }