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

# required AVM resources interfaces resource "azurerm_management_lock" "this" { count = var.lock != null ? 1 : 0 lock_level = var.lock.kind name = coalesce(var.lock.name, "lock-${var.lock.kind}") scope = azurerm_managed_disk.this.id notes = var.lock.kind == "CanNotDelete" ? "Cannot delete the resource or its child resources." : "Cannot delete or modify the resource or its child resources." } resource "azurerm_role_assignment" "this" { for_each = var.role_assignments principal_id = each.value.principal_id scope = azurerm_managed_disk.this.id condition = each.value.condition condition_version = each.value.condition_version delegated_managed_identity_resource_id = each.value.delegated_managed_identity_resource_id role_definition_id = strcontains(lower(each.value.role_definition_id_or_name), lower(local.role_definition_resource_substring)) ? each.value.role_definition_id_or_name : null role_definition_name = strcontains(lower(each.value.role_definition_id_or_name), lower(local.role_definition_resource_substring)) ? null : each.value.role_definition_id_or_name skip_service_principal_aad_check = each.value.skip_service_principal_aad_check } resource "azurerm_managed_disk" "this" { create_option = var.create_option location = var.location name = var.name resource_group_name = var.resource_group_name storage_account_type = var.storage_account_type disk_access_id = var.disk_access_id disk_encryption_set_id = var.disk_encryption_set_id disk_iops_read_only = var.disk_iops_read_only disk_iops_read_write = var.disk_iops_read_write disk_mbps_read_only = var.disk_mbps_read_only disk_mbps_read_write = var.disk_mbps_read_write disk_size_gb = var.disk_size_gb edge_zone = var.edge_zone gallery_image_reference_id = var.gallery_image_reference_id hyper_v_generation = var.hyper_v_generation image_reference_id = var.image_reference_id logical_sector_size = var.logical_sector_size max_shares = var.max_shares network_access_policy = var.network_access_policy on_demand_bursting_enabled = var.on_demand_bursting_enabled optimized_frequent_attach_enabled = var.optimized_frequent_attach_enabled os_type = var.os_type performance_plus_enabled = var.performance_plus_enabled public_network_access_enabled = var.public_network_access_enabled secure_vm_disk_encryption_set_id = var.secure_vm_disk_encryption_set_id security_type = var.security_type source_resource_id = var.source_resource_id source_uri = var.source_uri storage_account_id = var.storage_account_id tags = var.tags tier = var.tier trusted_launch_enabled = var.trusted_launch_enabled upload_size_bytes = var.upload_size_bytes zone = var.zone dynamic "encryption_settings" { for_each = var.encryption_settings == null ? [] : [var.encryption_settings] content { dynamic "disk_encryption_key" { for_each = encryption_settings.value.disk_encryption_key == null ? [] : [encryption_settings.value.disk_encryption_key] content { secret_url = disk_encryption_key.value.secret_url source_vault_id = disk_encryption_key.value.source_vault_id } } dynamic "key_encryption_key" { for_each = encryption_settings.value.key_encryption_key == null ? [] : [encryption_settings.value.key_encryption_key] content { key_url = key_encryption_key.value.key_url source_vault_id = key_encryption_key.value.source_vault_id } } } } }