【问题标题】:Ansible VMWare not clean datastoreAnsible VMWare 不清理数据存储
【发布时间】:2021-05-01 09:09:47
【问题描述】:

我编写了 2 个 Ansible 剧本来在 ESXi 实例中创建和销毁 vm。

创建任务是:

- 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

删除剧本是:

- 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

创建是正确的,虽然删除可以正确停止并删除虚拟机,但它不会从数据存储中删除文件夹。

我应该怎么做才能完全删除与 vm 相关的所有文件?

【问题讨论】:

  • delete_from_inventory 参数是仅用于从清单中删除 VM 的参数。您要从数据存储中删除 VM 文件,请删除 delete_from_inventory 参数或将其设置为 false。
  • 我想同时获得移动以使 esxi 实例恢复到 vm 存在之前的状态。没有那个参数我能得到这个吗?
  • 你能告诉我ESXi instance back to the state before the vm existed的含义吗?我理解您想要从 ESXi 和数据存储中删除所有虚拟机的目的。这是正确的吗?
  • 我想针对主机定义运行创建手册以创建 vm(和相关数据存储文件夹);然后针对相同的主机定义使用干净的剧本来完全删除与该虚拟机相关的文件。我认为 vm 删除也应该清理它的数据存储文件。

标签: ansible vmware esxi


【解决方案1】:

如果您还想从 datastore 中删除文件,则需要删除以下行:

delete_from_inventory: True

this module 的 ansible 文档说:

delete_from_inventory:

选择:是从清单中删除虚拟机还是从磁盘中删除。 没有 |是的

仅删除该行,文件将从数据存储中删除。

【讨论】:

  • 其实我对那个参数的描述不是很了解。所以,如果我想从清单中删除 vm 以及从数据存储中删除它的文件,我是否需要 2 个任务(第一个任务是 delete_from_inventory 为 True,第二个任务为 False)?
  • 是的,文档。有点令人困惑。为了完全删除您的 VM,只需删除此行:delete_from_inventory: True。这将从 Datastore 中删除文件,也会从清单中删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多