Expand a Virtual Disk in VMware vSphere Virtual Machine - Ansible module vmware_guest_disk
By Luca Berton · Published 2024-01-01 · Category: troubleshooting
How to automate the expansion from 1GB to 2GB size Virtual Disk connected to VMware Virtual Machine guest named “myvm” using Ansible Playbook.

How to Expand a Virtual Disk in VMware vSphere Virtual Machine with Ansible?
I'm going to show you a live Playbook and some simple Ansible code. I'm Luca Berton and welcome to today's episode of Ansible Pilot.See also: How to Add a Disk to a VMware VM Using Ansible Playbook
Ansible Expand a Virtual Disk in VMware vSphere Virtual Machine
•community.vmware.vmware_guest_disk
• Manage disks related to a virtual machine in a given vCenter infrastructure
Let's talk about the Ansible module vmware_guest_disk.
The full name is community.vmware.vmware_guest_disk, which means that is part of the collection of modules to interact with VMware, community-supported.
It manages disks related to a virtual machine in a given vCenter infrastructure.
Parameters
• hostname string / username string / password string / datacenter string / validate_certs boolean - connection details • datacenter string - The datacenter name to which the virtual machine belongs to • scsi_controller / unit_number / scsi_type string - SCSI controller details • size / size_kb / size_mb / size_gb / size_tb string - Disk storage size • disk_mode string - persistent / independent_persistent / independent_nonpersistentThe following parameters are useful in order to Expand a Virtual Disk in VMware vSphere Virtual Machine using the module vmware_guest_disk.
First of all, we need to establish the connection with VMware vSphere or VMware vCenter using a plethora self-explicative parameters: hostname, username, password, datacenter, and validate_certs.
Once the connection is successfully established you could specify the desired disk configuration, in this expansion, a disk is connected to a virtual machine.
The mandatory parameters are only datacenter and unit_number.
The datacenter parameter specifies which datacenter name the virtual machine belongs to, for resources allocations.
The disk must be connected to a SCSI controller inside the virtual machine, so you should specify all the small details like scsi_controller, unit_number, and scsi_type.
You might be interested in deep-diving into some performance analysis to properly adjust these parameters.
You could specify the disk size via various parameters according to the needed size unit: kb, MB, GB, TB, etc.
One most important parameter is the disk_mode, default to persistent mode, other options are independent_persistent and independent_nonpersistent.
See also: Configure Ansible Dynamic Inventory for VMware in Simple Steps
Links
•community.vmware.vmware_guest_disk
## Playbook
How to Expand a Virtual Disk in VMware vSphere Virtual Machine with Ansible. I'm going to show you how to expand the size of an additional disk connected to a Virtual Machine named "myvm" using Ansible Playbook. The disk is connected to a SCSI controller number 1 and has unit number 1. The beginning of the Playbook has a size of 1 GB and we would like to expand it to 2 GB.
code
• vm_disk_expand.yml---
- name: vm disk Playbook
hosts: localhost
become: false
gather_facts: false
collections:
- community.vmware
pre_tasks:
- include_vars: vars.yml
tasks:
- name: expand disk in vm
vmware_guest_disk:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: "{{ vcenter_validate_certs }}"
datacenter: "{{ vcenter_datacenter }}"
name: "{{ vm_name }}"
disk:
- size_gb: "{{ vm_disk_gb }}"
type: "{{ vm_disk_type }}"
datastore: "{{ vm_disk_datastore }}"
state: present
scsi_controller: "{{ vm_disk_scsi_controller }}"
unit_number: "{{ vm_disk_unit }}"
scsi_type: "{{ vm_disk_scsi_type }}"
disk_mode: "{{ vm_disk_mode }}"
• vars.yml
---
vcenter_hostname: "vmware.example.com"
vcenter_datacenter: "vmwaredatacenter"
vcenter_validate_certs: false
vcenter_username: "username@vsphere.local"
vcenter_password: "MySecretPassword123"
vm_name: "myvm"
vm_disk_gb: 2
vm_disk_type: "thin"
vm_disk_datastore: "datastore"
vm_disk_scsi_controller: 1
vm_disk_scsi_unit: 1
vm_disk_scsi_type: 'paravirtual'
vm_disk_mode: 'persistent'
• inventory
localhost
execution
$ ansible-playbook vm_disk_expand.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
PLAY [vm disk Playbook] *******************************************************************************
TASK [include_vars] *******************************************************************************
ok: [localhost]
TASK [expand disk in vm] **************************************************************************
changed: [localhost]
PLAY RECAP ****************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
idempotency
$ ansible-playbook vm_disk_expand.yml
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
PLAY [vm disk Playbook] *******************************************************************************
TASK [include_vars] *******************************************************************************
ok: [localhost]
TASK [expand disk in vm] **************************************************************************
ok: [localhost]
PLAY RECAP ****************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
before execution
after execution
Conclusion
Now you know how to Expand a Virtual Disk in VMware vSphere Virtual Machine with Ansible.
See also: Configuring Ansible for VMware: Complete Setup Guide & Playbook
Related Articles
• become directives in Ansible • Ansible inventory best practicesCategory: troubleshooting
Watch the video: Expand a Virtual Disk in VMware vSphere Virtual Machine - Ansible module vmware_guest_disk — Video Tutorial