Using Ansible Playbook To Snapshot Virtual Machine On vSphere
– Ansible provides various modules to manage VMware infrastructure, which includes datacenter, cluster, host system and virtual machine.
I/Requirements:
– Ansible VMware modules are written on top of pyVmomi. Install pyVmomi python module first:
# pip3 install pyvmomi
– Ansible VMware modules leveraging latest vSphere(6.0+) features are using vSphere Automation Python SDK. Install vSphere Automation Python SDK using pip:
# git clone https://github.com/vmware/vsphere-automation-sdk-python.git
# cd vsphere-automation-sdk-python
# mkdir /root/ansible/vmware_sdk_lib
# pip3 install -r requirements.txt –extra-index-url /source/ansible_vmware/vsphere-automation-sdk-python/lib
II/Installing SSL Certificates:
1/Install vCenter SSL Certificate To Ansible Host:
– Go to the base URL of the vCenter Server: https://IPVcenter
– Click the “Download trusted root CA certificates” >> Zip file

– Extract the contents of the zip file > upload certs folder to Ansible Host

2/Installing ESXi SSL certificates for Ansible:
– SSH to ESXi server using administrative credentials, and navigate to directory /etc/vmware/ssl
– Download rui.crt and upload to Ansible host at location: /etc/pki/ca-trust/source/anchors/

III/Using Playbook To Snapshot VM Before Processing Update:
– Prepare ansible configuration file with static inventory to localhost


– Create secret for storing variables username and password for accessing vcenter

-Writing playbook execute task as workflow:
Shutdown guest VM->Snapshot VM ->Starting VM
– name: Snapshot Workflow For VM Before Update OS
hosts: localhost
become: true
vars:
snap_name: Before_Update_17032021
vars_files:
– list_vms.txt
tasks:
– name: Load username and password variable for vCenter access
include_vars:
file: /root/ansible/books/vmware/password.yml
– name: Print username and password to test
debug:
msg: “{{ username + ‘-‘ + password}}”
– name: Shutdown Guest VM
vmware_guest_powerstate:
hostname: 192.168.9.99
username: “{{username}}”
password: “{{password}}”
state: shutdown-guest
name: “{{item}}”
loop: “{{vm_snapshot}}”
– name: Pause Playbook run 1 minute for shutdown all VM complete
pause:
minutes: 1
– name: Snapshot VM after shutdown OS
vmware_guest_snapshot:
hostname: 192.168.9.99
username: “{{username}}”
password: “{{password}}”
datacenter: DC-TestLab
folder: DC-TestLab/vm
snapshot_name: Before_Update_17032021
name: “{{item}}”
loop: “{{vm_snapshot}}”
– name: Start VM after snapshot process
vmware_guest_powerstate:
hostname: 192.168.9.99
username: “{{username}}”
password: “{{password}}”
state: powered-on
name: “{{item}}”
loop: “{{vm_snapshot}}”
– Run playbook to process task as workflow:

– Checking all VM startup and has snapshot

Ref: http://vmt1991.pythonanywhere.com/blog/post/116/#