Search code examples
ansiblevmwareesxi

Ansible VMWare not clean datastore


I wrote 2 Ansible playbooks to create and destroy a vm inside an ESXi instance.

The create task is:

- name: Clone the template
  delegate_to: localhost
  community.vmware.vmware_guest:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    cluster: "{{ vcenter_cluster_name }}"
    datacenter: "{{ vcenter_datacenter_name }}"
    folder: "{{ vcenter_datacenter_folder }}"
    datastore: "{{ vcenter_datastore }}"
    validate_certs: False
    name: "{{ inventory_hostname }}"
    template: "{{ vm_template }}"
    state: poweredon
    wait_for_ip_address: yes
    networks:
      - name: "DSwitch_Dati-VM Network 869"
        ip: "{{ ansible_host }}"
        netmask: "{{ vm_netmask }}"
        gateway: "{{ vm_gateway }}"
        start_connected: yes

The delete playbook is:

- name: TMS Cleaner
  hosts: all
  remote_user: tms
  tasks:
    - name: Set powerstate of virtual machine to poweroff
      delegate_to: localhost
      community.vmware.vmware_guest:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: False
        name: "{{ inventory_hostname }}"
        state: poweredoff

    - name: Remove virtual machine from inventory
      delegate_to: localhost
      community.vmware.vmware_guest:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        folder: "{{ vcenter_datacenter_folder }}"
        datastore: "{{ vcenter_datastore }}"
        validate_certs: False
        name: "{{ inventory_hostname }}"
        delete_from_inventory: True
        state: absent

The creation is correct, while deletion can correctly stop and remove the vm BUT it doeas not remove the folder from the datastore.

What should I do to have a full deletion of all files related to a vm?


Solution

  • If you want to have the files deleted also from datastore you need to remove the following line:

    delete_from_inventory: True
    

    The ansible documentation for this module says:

    delete_from_inventory:

    Choices: Whether to delete Virtual machine from inventory or delete from disk. no | yes

    Only remove that line and files will be deleted from datastore.