diff --git a/terraform/resize-vm-disk/main.tf b/terraform/resize-vm-disk/main.tf new file mode 100644 index 0000000..f7eeafd --- /dev/null +++ b/terraform/resize-vm-disk/main.tf @@ -0,0 +1,56 @@ +data "vsphere_datacenter" "dc" { + name = var.vsphere_datacenter +} + +data "vsphere_virtual_machine" "vm" { + name = var.vm_name + datacenter_id = data.vsphere_datacenter.dc.id +} + +locals { + current_disk_size_gb = data.vsphere_virtual_machine.vm.disks[0].size + target_disk_size_gb = local.current_disk_size_gb + var.increase_gb +} + +resource "vsphere_virtual_machine" "resize" { + name = data.vsphere_virtual_machine.vm.name + resource_pool_id = data.vsphere_virtual_machine.vm.resource_pool_id + datastore_id = data.vsphere_virtual_machine.vm.datastore_id + + num_cpus = data.vsphere_virtual_machine.vm.num_cpus + memory = data.vsphere_virtual_machine.vm.memory + guest_id = data.vsphere_virtual_machine.vm.guest_id + firmware = data.vsphere_virtual_machine.vm.firmware + scsi_type = data.vsphere_virtual_machine.vm.scsi_type + + network_interface { + network_id = data.vsphere_virtual_machine.vm.network_interface_types[0] != "" ? data.vsphere_virtual_machine.vm.network_interface[0].network_id : null + adapter_type = data.vsphere_virtual_machine.vm.network_interface_types[0] + } + + disk { + label = var.disk_label + size = local.target_disk_size_gb + unit_number = 0 + thin_provisioned = data.vsphere_virtual_machine.vm.disks[0].thin_provisioned + } + + lifecycle { + ignore_changes = [ + annotation, + clone, + extra_config, + hv_mode, + vapp, + network_interface, + ] + } +} + +output "current_disk_size_gb" { + value = local.current_disk_size_gb +} + +output "target_disk_size_gb" { + value = local.target_disk_size_gb +}