diff --git a/main.tf b/main.tf index 6b16d47..6af76e9 100644 --- a/main.tf +++ b/main.tf @@ -54,6 +54,19 @@ resource "azurerm_network_interface" "vm_nic" { } } +resource "azurerm_managed_disk" "data_disk" { + name = "${var.prefix}-winvm-datadisk" + location = azurerm_resource_group.rg.location + resource_group_name = azurerm_resource_group.rg.name + storage_account_type = "Premium_LRS" + create_option = "Empty" + disk_size_gb = var.datadisk_size_gb + + lifecycle { + prevent_destroy = true + } +} + resource "random_password" "admin_password" { length = 16 special = false @@ -65,6 +78,8 @@ resource "azurerm_windows_virtual_machine" "vm" { resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location size = var.vm_size + priority = var.vm_priority + eviction_policy = var.vm_priority == "Spot" ? "Deallocate" : null admin_username = var.vm_admin_username admin_password = random_password.admin_password.result @@ -86,6 +101,13 @@ resource "azurerm_windows_virtual_machine" "vm" { } } +resource "azurerm_virtual_machine_data_disk_attachment" "data_disk_attachment" { + managed_disk_id = azurerm_managed_disk.data_disk.id + virtual_machine_id = azurerm_windows_virtual_machine.vm.id + lun = var.datadisk_lun + caching = "ReadWrite" +} + resource "azurerm_virtual_machine_extension" "provision_software" { name = "provision-software" virtual_machine_id = azurerm_windows_virtual_machine.vm.id @@ -93,9 +115,11 @@ resource "azurerm_virtual_machine_extension" "provision_software" { type = "CustomScriptExtension" type_handler_version = "1.10" + depends_on = [azurerm_virtual_machine_data_disk_attachment.data_disk_attachment] + protected_settings = <