AVS-Landing-Zone/GreenField/Terraform/jumpbox.tf (74 lines of code) (raw):

resource "azurerm_network_interface" "nic" { name = "${var.prefix}-jumpbox" location = azurerm_resource_group.jumpbox.location resource_group_name = azurerm_resource_group.jumpbox.name ip_configuration { name = "ipconfig1" subnet_id = azurerm_subnet.jumpboxsubnet.id private_ip_address_allocation = "Dynamic" } } resource "azurerm_windows_virtual_machine" "vm" { name = "${var.prefix}-jumpbox" resource_group_name = azurerm_resource_group.jumpbox.name location = azurerm_resource_group.jumpbox.location size = var.jumpboxsku admin_username = var.adminusername admin_password = random_password.admin_password.result zone = 1 network_interface_ids = [ azurerm_network_interface.nic.id, ] os_disk { caching = "ReadWrite" storage_account_type = "Premium_LRS" } source_image_reference { publisher = "MicrosoftWindowsDesktop" offer = "Windows-11" sku = "win11-21h2-avd" version = "latest" } } resource "random_password" "admin_password" { length = 23 special = true numeric = true min_special = 1 min_numeric = 1 min_upper = 1 min_lower = 1 } resource "random_string" "namestring" { length = 4 special = false upper = false lower = true } resource "azurerm_key_vault_secret" "admin_password" { key_vault_id = module.avm_res_keyvault_vault.resource.id name = "${var.prefix}-jumpbox-${var.adminusername}-password" value = random_password.admin_password.result } module "avm_res_keyvault_vault" { source = "Azure/avm-res-keyvault-vault/azurerm" version = "0.5.3" tenant_id = data.azurerm_client_config.current.tenant_id name = "${var.key_vault_name}-${random_string.namestring.result}" resource_group_name = azurerm_resource_group.jumpbox.name location = azurerm_resource_group.jumpbox.location enabled_for_deployment = true network_acls = { default_action = "Allow" bypass = "AzureServices" } role_assignments = { deployment_user_secrets = { role_definition_id_or_name = "Key Vault Administrator" principal_id = data.azurerm_client_config.current.object_id } } wait_for_rbac_before_secret_operations = { create = "60s" } }