Ansible Pilot

Expand a Virtual Disk in VMware vSphere Virtual Machine - Ansible module vmware_guest_disk

Access the Complete Video Course and Learn Quick Ansible by 200+ Practical Lessons

How to automate the expansion from 1GB to 2GB size Virtual Disk connected to VMware Virtual Machine guest named “myvm” using Ansible Playbook and vmware_guest_disk module.

How to Expand a Virtual Disk in VMware vSphere Virtual Machine with Ansible?

I’m going to show you a live demo and some simple Ansible code. I’m Luca Berton and welcome to today’s episode of Ansible Pilot.

Ansible Expand a Virtual Disk in VMware vSphere Virtual Machine

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

The 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.

demo

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 demo has a size of 1 GB and we would like to expand it to 2 GB.

code

---
- name: vm disk demo
  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 }}"
---
vcenter_hostname: "vmware.example.com"
vcenter_datacenter: "vmwaredatacenter"
vcenter_validate_certs: false
vcenter_username: "[email protected]"
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'
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 demo] *******************************************************************************
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 demo] *******************************************************************************
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

vmware_guest_disk before execution

after execution

vmware_guest_disk after execution

code with ❤️ in GitHub

Recap

Now you know how to Expand a Virtual Disk in VMware vSphere Virtual Machine with Ansible. Subscribe to the YouTube channel, Medium, Website and Twitter to not miss the next episode of the Ansible Pilot.

Academy

Learn the Ansible automation technology with some real-life examples in my

My book Ansible By Examples: 100+ Automation Examples For Linux and Windows System Administrator and DevOps

Access the Complete Book and Learn Quick Ansible by 200+ Examples

Want to keep this project going? Please donate

Access the Complete Video Course and Learn Quick Ansible by 200+ Practical Lessons
Trustpilot
Follow me

Subscribe not to miss any new releases

May 25, 2022

FREE Top 10 Best Practices

Top 10 Best Practices of Ansible Automation: save time, reduce errors and stress