This article is an introduction to different Ansible modules, which can be used to manage various VMware objects in VMware infrastructure.
Ansible is an IT automation tool. It can configure systems, deploy software and orchestrate advanced IT tasks such as continuous deployments or zero downtime rolling updates. Many of you already know that you can manage your VMware infrastructure using Ansible.
A recent development branch of Ansible, i.e., 2.4-devel (https://github.com/ansible/ansible/tree/devel), has brought in a lot of improvements in both its performance and its reliability.
Managing the ESXi host with different tools
The vSphere Client and the vSphere Web Client provide simple ways to manage your ESXi host and operate its virtual machines.
Another way of managing this is the Virtualisation Management Object Management Infrastructure’s (VMOMI) network exposed API. VMOMI can be used by various programming language bindings like PyVmomi (https://github.com/vmware/pyvmomi).
Getting started with Ansible
You can read more about Ansible official documentation at http://docs.ansible.com. Also, Open Source For You has covered various Ansible related topics in past editions.
Let us discuss a few Ansible VMware modules that are essential for managing and administrating various VMware objects.
Managing virtual machines
vmware_guest: This module is required in order to manage a virtual machine in your vCenter or standalone ESXi environment. The module can create, modify, rename and remove a virtual machine. It can also power on, power off, restart and suspend a virtual machine.
The following Ansible Playbook example shows how to create a virtual machine:
- name: Example Playbook for creating virtual machine hosts: localhost tasks: - name: Create a virtual machine with name testvm01 vmware_guest: datacenter: datacenter01 esxi_hostname: esxi_host_01 hostname: 127.0.0.1 name: testvm01 guest_id: centos64guest username: user password: pass@123 state: present disk: - size_gb: 1 type: thin datastore: LocalDS_0 hardware: memory_mb: 512 num_cpus: 1 osid: centos64guest scsi: paravirtual
You can read more about this module at http://docs.ansible.com/ansible/latest/vmware_guest_module.html.
vmware_guest_facts: You often want to get details about a virtual machine like its IP address, folder path, MAC address, etc. This module does exactly that. vmware_guest_facts gives you all the vital information about a virtual machine. You can chain the information received from this module to various other VMware modules.
--- - name: Example playbook to get facts about virtual machine hosts: localhost tasks: - name: get list of facts about virtual machines vmware_guest_facts: validate_certs: False hostname: esxi_hostname_01 username: user password: pass@123 datacenter: datacenter_01 name: testvm01 folder: /vm register: guest_facts_0001 - debug: msg=”{{ guest_facts_0001 }}”
You can read more about this module at http://docs.ansible.com/ansible/latest/vmware_guest_facts_module.html.
vmware_guest_find: This module provides information about the folder path in which the virtual machine is located. This information is required in various other VMware modules.
The following example will find the folder path related to a virtual machine.
--- - name: Example playbook to find the details of folder related to virtual machine hosts: localhost tasks: - name: Get folder path for virtual machine vmware_guest_find: validate_certs: false hostname: 127.0.0.1 username: user password: pass name: testvm01 datacenter: datacenter_01 register: folder_details - debug: msg=”{{ folder_details }}”
You can read more about this module at https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/vmware/vmware_guest_find.py.
vmware_guest_snapshot: When we want to preserve the state of the virtual machine at a given point of time, we take a snapshot of the virtual machine. This module provides the functionality to manage various operations related to a snapshot such as create, delete, revert and restore. This module requires information on the folder path along with the virtual machine name. Here, we can use the information provided by vmware_guest_find on the folder path.
The following playbook example will show how to take a simple snapshot of a virtual machine:
--- - name: Example to take a snapshot of virtual machine hosts: localhost tasks: - name: Take a snapshot vmware_guest_snapshot: hostname: esxi_hostname_01 username: root password: esxi@123 name: testvm01 folder: /vm snapshot_name: my_secure_stable_snapshot register: snap_state_001 - debug: msg=”{{ snap_state_001 }}” You can read more about this module at http://docs.ansible.com/ansible/latest/vmware_guest_snapshot_module.html.
Managing clusters
vmware_cluster: This module allows you to manage a cluster in your VMware infrastructure. It also allows you to set various cluster properties such as HA, vSAN and DRS.
The following example will add a sample cluster in a given VMware infrastructure:
--- - name: Example playbook to add a cluster hosts: localhost tasks: - name: Add cluster vmware_cluster: validate_certs: false hostname: esxi_hostname_01 username: root password: esxi@123 datacenter_name: datacenter_01 cluster_name: esx_cluster_002 register: new_cluster_details - debug: msg=new_cluster_details
You can read more about this module at http://docs.ansible.com/ansible/latest/vmware_cluster_module.html.
Managing data centres
vmware_datacenter: This module allows you to manage a data centre in your VMware infrastructure. You can read more about this module at http://docs.ansible.com/ansible/latest/vmware_datacenter_module.html.
Managing VMware networks
You can manage various VMware network objects such as a distributed virtual switch, virtual switch, port group, distributed virtual switch port group, etc.
You can read more about these various modules at http://docs.ansible.com/ansible/latest/list_of_cloud_modules.html#vmware.
Ansible VMware modules are undergoing heavy development; you can take active part in this by developing or testing various modules. You can read more about hacking Ansible modules at https://github.com/ansible/ansible/blob/devel/hacking/README.md.
Hi ,
Whats the advantages of using Ansible over Vmware power CLI
thanks
Charanjit