Playbooks are automation blueprints, in YAML format that ansible uses to deploy and configure managed nodes.
First we will create a file in /etc/ansible called ansible.cfg
sudo nano ansible.cfg
[defaults]
inventory = ./inventory.ini
ansible_python_interpreter = /usr/bin/python3
forks = 5
host_key_checking = False
[privilege_escalation]
become = False

Next we will create a vcenter_vars.yml file in the playbooks directory I create, this will have the config of my vcenter.
cd /etc/ansible
sudo mkdir playbooks
cd playbooks
sudo nano vcenter_vars.yml
---
# Common variables
- validate_certs: no
- debug_flag: no
# vCenter related details
- vcenter_server: 192.168.1.13
- vcenter_user: administrator@vsphere.local
- vcenter_pass: VMware1!
# VMware object related details
#- datacenter: DC0
#- cluster_name: DC0_C1
#- vm_name: rhel_7_template
next we will create three playbooks in the playbooks folder
create-vm-from-template.yml
---
- name: Create a VM from a template
hosts: localhost
gather_facts: no
tasks:
- name: Clone the template
vmware_guest:
hostname: 192.168.1.13
username: administrator@vsphere.local
password: VMware1!
validate_certs: False
name: ansible-test-vm1
template: ansible-template
datacenter: dc1
folder: /dc1/vm
state: poweredon
cluster: cl1
wait_for_ip_address: no
Poweroff-virtual-machine.yml
---
- name: Power off virtual machine
gather_facts: no
vars_files:
- vcenter_vars.yml
hosts: localhost
tasks:
- set_fact:
vm_name: "ansible-test-vm1"
datacenter: "dc1"
- name: poweroff "{{ vm_name }}"
vmware_guest:
hostname: "{{ vcenter_server }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: no
cluster: "DC1_C1"
name: "{{ vm_name }}"
state: absent
force: true
delegate_to: localhost
register: facts
delete-virtual-machine.yml
---
- name: Remove virtual machine
gather_facts: no
vars_files:
- vcenter_vars.yml
hosts: localhost
tasks:
- set_fact:
vm_name: "ansible-test-vm1"
datacenter: "dc1"
- name: Remove "{{ vm_name }}"
vmware_guest:
hostname: "{{ vcenter_server }}"
username: "{{ vcenter_user }}"
password: "{{ vcenter_pass }}"
validate_certs: no
cluster: "DC1_C1"
name: "{{ vm_name }}"
state: absent
delegate_to: localhost
register: facts
Ok now lets run them make sure it works
ansible-playbook /etc/ansible/playbooks/create-vm-from-template.yml
ansible-playbook /etc/ansible/playbooks/Poweroff-virtual-machine.yml
ansible-playbook /etc/ansible/playbooks/delete-virtual-machine.yml


