workload/terraform/greenfield/ADDSscenario/keyvault.tf (88 lines of code) (raw):

# Get current IP address for use in KV firewall rules data "http" "ip" { url = "https://api.ipify.org/" retry { attempts = 5 max_delay_ms = 1000 min_delay_ms = 500 } } # Get current IP address for use in KV firewall rules data "http" "ipv6" { url = "https://api64.ipify.org/" retry { attempts = 5 max_delay_ms = 1000 min_delay_ms = 500 } } module "avm-res-keyvault-vault" { source = "Azure/avm-res-keyvault-vault/azurerm" version = "0.5.3" location = azurerm_resource_group.this.location name = local.keyvault_name resource_group_name = azurerm_resource_group.this.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" enabled_for_deployment = true enabled_for_disk_encryption = true purge_protection_enabled = true soft_delete_retention_days = 7 tags = local.tags diagnostic_settings = { to_la = { name = "to-la" workspace_resource_id = module.avm_res_operationalinsights_workspace.resource.id } } public_network_access_enabled = true private_endpoints = { primary = { private_dns_zone_resource_ids = [data.azurerm_private_dns_zone.pe-vaultdns-zone.id] subnet_resource_id = data.azurerm_subnet.pesubnet.id } } network_acls = { bypass = "AzureServices" default_action = "Deny" ip_rules = ["${data.http.ip.response_body}/32", "${data.http.ipv6.response_body}/32"] virtual_network_subnet_ids = [ data.azurerm_subnet.pesubnet.id ] } keys = { cmk_for_storage_account = { key_opts = [ "decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey" ] key_type = "RSA" key_vault_id = module.avm-res-keyvault-vault.resource.id name = "cmk-for-storage-account" key_size = 2048 } } } # Generate VM local password resource "random_password" "vmpass" { length = 20 special = true } # Create Key Vault Secret resource "azurerm_key_vault_secret" "localpassword" { key_vault_id = module.avm-res-keyvault-vault.resource.id name = "vmlocalpassword" value = random_password.vmpass.result content_type = "Password" depends_on = [ azurerm_role_assignment.keystor ] lifecycle { ignore_changes = [tags] } } # Sets RBAC permission for Key Vault resource "azurerm_role_assignment" "keystor" { principal_id = data.azurerm_client_config.current.object_id scope = module.avm-res-keyvault-vault.resource.id role_definition_name = "Key Vault Administrator" }