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: