How to Deploy a VMware vSphere Virtual Machine from a Template 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
Ansible Deploy a VMware vSphere Virtual Machine from a Template
community.vmware.vmware_guest
- Manages virtual machines in vCenter
Let’s talk about the Ansible module vmware_guest
.
The full name is community.vmware.vmware_guest
, which means that is part of the collection of modules to interact with VMware, community-supported.
It’s a module pretty stable and out for years.
It manages virtual machines in vCenter.
Parameters
The module vmware_guest
has a very long list of parameters to customize all your needs to create a VMware vSphere Virtual Machine. Please refer to the manual for the full list.
Links
Playbook
How to Deploy a VMware vSphere Virtual Machine from a Template with Ansible. I’m going to show you how to deploy a Virtual Machine named “myvm” from a template “mytemplate” without any customization.
code
- vm_deploy_template.yml
---
- name: deploy vm from template Playbook
hosts: localhost
become: false
gather_facts: false
collections:
- community.vmware
pre_tasks:
- include_vars: vars.yml
tasks:
- name: create folder
vcenter_folder:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: "{{ vcenter_validate_certs }}"
datacenter_name: "{{ vcenter_datacenter }}"
folder_name: "{{ vcenter_destination_folder }}"
folder_type: vm
state: present
- name: clone VM
vmware_guest:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: "{{ vcenter_validate_certs }}"
datacenter: "{{ vcenter_datacenter }}"
cluster: "{{ vcenter_cluster }}"
name: "{{ vm_name }}"
folder: "{{ vcenter_destination_folder }}"
template: "{{ vm_template }}"
- vars.yml
---
vcenter_hostname: "vmware.example.com"
vcenter_datacenter: "vmwaredatacenter"
vcenter_validate_certs: false
vcenter_username: "[email protected]"
vcenter_password: "MySecretPassword123"
vm_name: "myvm"
vcenter_destination_folder: "myvm"
vm_state: "poweroff"
vm_template: "mytemplate"
- inventory
localhost
execution
$ ansible-playbook -i inventory vm_deploy_template.yml
PLAY [deploy vm from template Playbook] ***************************************************************
TASK [include_vars] *******************************************************************************
ok: [localhost]
TASK [create folder] ******************************************************************************
changed: [localhost]
TASK [clone VM] ***********************************************************************************
changed: [localhost]
PLAY RECAP ****************************************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
idempotency
$ ansible-playbook -i inventory vm_deploy_template.yml
PLAY [deploy vm from template Playbook] ***************************************************************
TASK [include_vars] *******************************************************************************
ok: [localhost]
TASK [create folder] ******************************************************************************
ok: [localhost]
TASK [clone VM] ***********************************************************************************
ok: [localhost]
PLAY RECAP ****************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
after execution
Conclusion
Now you know how to Deploy a VMware vSphere Virtual Machine from a Template with Ansible. Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.
Academy
Learn the Ansible automation technology with some real-life examples in my Udemy 300+ Lessons Video Course.
My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
Donate
Want to keep this project going? Please donate