modules/ai-foundry-network/jumpbox.tf (88 lines of code) (raw):

locals { bastion_host_name = "ab-${var.base_name}" jump_box_name = length("jmp-${var.base_name}") > 15 ? substr("jmp-${var.base_name}", 0, 15) : "jmp-${var.base_name}" } resource "random_password" "jump_box_admin_password" { length = 16 special = true } resource "azurerm_public_ip" "bastion_public_ip" { count = var.deploy_network && var.deploy_bastion ? 1 : 0 # Adjust deployment logic name = "pip-${local.bastion_host_name}" location = var.location resource_group_name = var.resource_group_name allocation_method = "Static" sku = "Standard" zones = ["1", "2", "3"] } resource "azurerm_bastion_host" "bastion" { count = var.deploy_network && var.deploy_bastion ? 1 : 0 # Adjust deployment logic name = local.bastion_host_name location = var.location resource_group_name = var.resource_group_name sku = "Basic" ip_configuration { name = "default" subnet_id = azurerm_subnet.azure_bastion.id public_ip_address_id = azurerm_public_ip.bastion_public_ip[0].id } } resource "azurerm_network_interface" "jump_box_nic" { name = "nic-${local.jump_box_name}" location = var.location resource_group_name = var.resource_group_name ip_configuration { name = "primary" subnet_id = azurerm_subnet.jumpbox.id private_ip_address_allocation = "Dynamic" public_ip_address_id = null } } resource "azurerm_windows_virtual_machine" "jump_box" { name = "vm-${local.jump_box_name}" location = var.location resource_group_name = var.resource_group_name network_interface_ids = [azurerm_network_interface.jump_box_nic.id] size = var.config.vm_size admin_username = var.config.jump_box_admin_name admin_password = var.config.jump_box_admin_password != "" ? var.config.jump_box_admin_password : random_password.jump_box_admin_password.result computer_name = local.jump_box_name provision_vm_agent = true source_image_reference { publisher = var.config.image_publisher offer = var.config.image_offer sku = var.config.image_sku version = var.config.image_version } os_disk { name = "osdisk-${local.jump_box_name}" caching = var.config.os_disk_caching storage_account_type = var.config.os_disk_storage_account_type } } resource "azurerm_virtual_machine_extension" "vm_access" { name = "enablevmAccess" virtual_machine_id = azurerm_windows_virtual_machine.jump_box.id publisher = "Microsoft.Compute" type = "VMAccessAgent" type_handler_version = "2.0" lifecycle { ignore_changes = [ settings ] } } resource "azurerm_virtual_machine_extension" "azure_monitor_agent" { name = "AzureMonitorWindowsAgent" virtual_machine_id = azurerm_windows_virtual_machine.jump_box.id publisher = "Microsoft.Azure.Monitor" type = "AzureMonitorWindowsAgent" type_handler_version = "1.21" } resource "azurerm_virtual_machine_extension" "dependency_agent" { name = "DependencyAgentWindows" virtual_machine_id = azurerm_windows_virtual_machine.jump_box.id publisher = "Microsoft.Azure.Monitoring.DependencyAgent" type = "DependencyAgentWindows" type_handler_version = "9.10" }