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

  • [community.vmware.vmware_guest](https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_guest_module.html)

## 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

``yaml

---

  • 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

`yaml

---

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

`ini

localhost

`

execution

``bash

$ ansible-playbook -i inventory vm_deploy_template.yml

PLAY [deploy vm from template Playbook] *

TASK [include_vars] *

ok: [localhost]

TASK [create folder] *