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

By Kad