How to create a 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

Ansible creates a VMware vSphere Virtual Machine

> community.vmware.vmware_guest Manages virtual machines in vCenter

Today we're talking 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 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 create a VMware vSphere Virtual Machine with Ansible.

I'm going to show you how to create a Virtual Machine named "myvm" with the following resources:

  • 1 CPU
  • 1 GB of RAM
  • 10 GB of storage, thin-provisioned in the datastore "Datastore-1"

network card name "VM Network", type "vmxnet3"

code

  • create_vm.yml

``yaml

---

  • name: create vm 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: create VM

vmware_guest:

hostname: "{{ vcenter_hostname }}"

username: "{{ vcenter_username }}"

password: "{{ vcenter_password }}"

validate_certs: "{{ vcenter_validate_certs }}"

datacenter: "{{ vcenter_datacenter }}"

name: "{{ vm_name }}"

folder: "{{ vcenter_destination_folder }}"

state: "{{ vm_state }}"

guest_id: "{{ vm_guestid }}"

cluster: "{{ vcenter_cluster }}"

disk:

- size_gb: "{{ vm_disk_gb }}"

type: "{{ vm_disk_type }}"

datastore: "{{ vm_disk_datastore }}"

hardware:

memory_mb: "{{ vm_hw_ram_mb }}"

num_cpus: "{{ vm_hw_cpu_n }}"

scsi: "{{ vm_hw_scsi }}"

networks:

- name: "{{ vm_net_name }}"

device_name: "{{ vm_net_type }}"

`

  • vars.yml

``yaml

---

vcenter_hostname: "vmware.example.com"

vcenter_datacenter: "vmwaredatacenter"

vcenter_validate_certs: false

vcenter_username: "[email protected]"

vcenter_password: "MySecretPassword123"

vm_name: