main.policy_assignments.tf (69 lines of code) (raw):

resource "terraform_data" "policy_assignments_dependencies" { input = sha256(jsonencode(var.dependencies.policy_assignments)) } resource "azapi_resource" "policy_assignments" { for_each = local.policy_assignments type = "Microsoft.Authorization/policyAssignments@2024-04-01" body = { properties = { description = lookup(each.value.assignment.properties, "description", null) displayName = lookup(each.value.assignment.properties, "displayName", null) enforcementMode = lookup(each.value.assignment.properties, "enforcementMode", null) metadata = merge( lookup(each.value.assignment.properties, "metadata", {}), { createdBy = "" createdOn = "" updatedBy = "" updatedOn = "" } ) nonComplianceMessages = lookup(each.value.assignment.properties, "nonComplianceMessages", null) notScopes = lookup(each.value.assignment.properties, "notScopes", null) overrides = lookup(each.value.assignment.properties, "overrides", null) parameters = lookup(each.value.assignment.properties, "parameters", null) policyDefinitionId = lookup(each.value.assignment.properties, "policyDefinitionId", null) resourceSelectors = lookup(each.value.assignment.properties, "resourceSelectors", null) } } ignore_missing_property = true location = var.location name = each.value.assignment.name parent_id = "/providers/Microsoft.Management/managementGroups/${each.value.mg}" replace_triggers_external_values = [ lookup(each.value.assignment.properties, "policyDefinitionId", null), var.location, ] retry = var.retries.policy_assignments.error_message_regex != null ? { error_message_regex = var.retries.policy_assignments.error_message_regex interval_seconds = lookup(var.retries.policy_assignments, "interval_seconds", null) max_interval_seconds = lookup(var.retries.policy_assignments, "max_interval_seconds", null) multiplier = lookup(var.retries.policy_assignments, "multiplier", null) randomization_factor = lookup(var.retries.policy_assignments, "randomization_factor", null) } : null dynamic "identity" { for_each = lookup(each.value.assignment, "identity", null) != null ? [each.value.assignment.identity] : [] content { type = identity.value.type identity_ids = lookup(identity.value, "identity_ids", null) } } timeouts { create = var.timeouts.policy_assignment.create delete = var.timeouts.policy_assignment.delete read = var.timeouts.policy_assignment.read update = var.timeouts.policy_assignment.update } depends_on = [ time_sleep.after_policy_set_definitions, terraform_data.policy_assignments_dependencies, ] lifecycle { ignore_changes = [ body.properties.metadata.createdBy, body.properties.metadata.createdOn, body.properties.metadata.updatedBy, body.properties.metadata.updatedOn, ] } }