AnsiblePilot — Master Ansible Automation

AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,400 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.

Popular Topics

About Luca Berton

Luca Berton is an Ansible automation expert, author of 8 Ansible books published by Apress and Leanpub including "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example", and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.

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.

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

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_nonpersistent

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.

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

vmware_guest_disk before execution

after execution

vmware_guest_disk after execution

code with ❤️ in GitHub

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 AnsibleAnsible inventory best practices

Category: troubleshooting

Watch the video: Expand a Virtual Disk in VMware vSphere Virtual Machine - Ansible module vmware_guest_disk — Video Tutorial

Browse all Ansible tutorials · AnsiblePilot Home