mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
d423b27288
Proxmox add storage content listing (#7725)
Add module to list content on proxmox storage
We first add a method to list storage content for proxmox, then use that
new methode to add an Ansible module to list content on storage attached
to a proxmox node. User can also use content filtering to define what
they want to list (backup, iso, images,...).
This commit also include the integration and unit test for that new
module.
Co-authored-by: Julian Vanden Broeck <julian.vandenbroeck@dalibo.com>
(cherry picked from commit 4f92f39720
)
Co-authored-by: Julian <374571+l00ptr@users.noreply.github.com>
615 lines
20 KiB
YAML
615 lines
20 KiB
YAML
####################################################################
|
|
# WARNING: These are designed specifically for Ansible tests #
|
|
# and should not be used as examples of how to write Ansible roles #
|
|
####################################################################
|
|
|
|
# Copyright (c) 2020, Tristan Le Guern <tleguern at bouledef.eu>
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
- name: List domains
|
|
proxmox_domain_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.proxmox_domains is defined
|
|
|
|
- name: Retrieve info about pve
|
|
proxmox_domain_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
domain: pve
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.proxmox_domains is defined
|
|
- results.proxmox_domains|length == 1
|
|
- results.proxmox_domains[0].type == 'pve'
|
|
|
|
- name: List groups
|
|
proxmox_group_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.proxmox_groups is defined
|
|
|
|
- name: List users
|
|
proxmox_user_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.proxmox_users is defined
|
|
|
|
- name: Retrieve info about api_user using name and domain
|
|
proxmox_user_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
user: "{{ user }}"
|
|
domain: "{{ domain }}"
|
|
register: results_user_domain
|
|
|
|
- assert:
|
|
that:
|
|
- results_user_domain is not changed
|
|
- results_user_domain.proxmox_users is defined
|
|
- results_user_domain.proxmox_users|length == 1
|
|
- results_user_domain.proxmox_users[0].domain == "{{ domain }}"
|
|
- results_user_domain.proxmox_users[0].user == "{{ user }}"
|
|
- results_user_domain.proxmox_users[0].userid == "{{ user }}@{{ domain }}"
|
|
|
|
- name: Retrieve info about api_user using userid
|
|
proxmox_user_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
userid: "{{ user }}@{{ domain }}"
|
|
register: results_userid
|
|
|
|
- assert:
|
|
that:
|
|
- results_userid is not changed
|
|
- results_userid.proxmox_users is defined
|
|
- results_userid.proxmox_users|length == 1
|
|
- results_userid.proxmox_users[0].domain == "{{ domain }}"
|
|
- results_userid.proxmox_users[0].user == "{{ user }}"
|
|
- results_userid.proxmox_users[0].userid == "{{ user }}@{{ domain }}"
|
|
|
|
- name: Retrieve info about storage
|
|
proxmox_storage_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
storage: "{{ storage }}"
|
|
register: results_storage
|
|
|
|
- assert:
|
|
that:
|
|
- results_storage is not changed
|
|
- results_storage.proxmox_storages is defined
|
|
- results_storage.proxmox_storages|length == 1
|
|
- results_storage.proxmox_storages[0].storage == "{{ storage }}"
|
|
|
|
- name: List content on storage
|
|
proxmox_storage_contents_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
storage: "{{ storage }}"
|
|
node: "{{ node }}"
|
|
content: images
|
|
register: results_list_storage
|
|
|
|
- assert:
|
|
that:
|
|
- results_storage is not changed
|
|
- results_storage.proxmox_storage_content is defined
|
|
- results_storage.proxmox_storage_content |length == 1
|
|
|
|
- name: VM creation
|
|
tags: [ 'create' ]
|
|
block:
|
|
- name: Create test vm test-instance
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
storage: "{{ storage }}"
|
|
vmid: "{{ from_vmid }}"
|
|
name: test-instance
|
|
clone: 'yes'
|
|
state: present
|
|
timeout: 500
|
|
register: results_kvm
|
|
|
|
- set_fact:
|
|
vmid: "{{ results_kvm.msg.split(' ')[-7] }}"
|
|
|
|
- assert:
|
|
that:
|
|
- results_kvm is changed
|
|
- results_kvm.vmid == from_vmid
|
|
- results_kvm.msg == "VM test-instance with newid {{ vmid }} cloned from vm with vmid {{ from_vmid }}"
|
|
|
|
- pause:
|
|
seconds: 30
|
|
|
|
- name: VM start
|
|
tags: [ 'start' ]
|
|
block:
|
|
- name: Start test VM
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: started
|
|
register: results_action_start
|
|
|
|
- assert:
|
|
that:
|
|
- results_action_start is changed
|
|
- results_action_start.status == 'stopped'
|
|
- results_action_start.vmid == {{ vmid }}
|
|
- results_action_start.msg == "VM {{ vmid }} started"
|
|
|
|
- pause:
|
|
seconds: 90
|
|
|
|
- name: Try to start test VM again
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: started
|
|
register: results_action_start_again
|
|
|
|
- assert:
|
|
that:
|
|
- results_action_start_again is not changed
|
|
- results_action_start_again.status == 'running'
|
|
- results_action_start_again.vmid == {{ vmid }}
|
|
- results_action_start_again.msg == "VM {{ vmid }} is already running"
|
|
|
|
- name: Check current status
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: current
|
|
register: results_action_current
|
|
|
|
- assert:
|
|
that:
|
|
- results_action_current is not changed
|
|
- results_action_current.status == 'running'
|
|
- results_action_current.vmid == {{ vmid }}
|
|
- results_action_current.msg == "VM test-instance with vmid = {{ vmid }} is running"
|
|
|
|
- name: VM add/change/delete NIC
|
|
tags: [ 'nic' ]
|
|
block:
|
|
- name: Add NIC to test VM
|
|
proxmox_nic:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
vmid: "{{ vmid }}"
|
|
state: present
|
|
interface: net5
|
|
bridge: vmbr0
|
|
tag: 42
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Nic net5 updated on VM with vmid {{ vmid }}"
|
|
|
|
- name: Update NIC no changes
|
|
proxmox_nic:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
vmid: "{{ vmid }}"
|
|
state: present
|
|
interface: net5
|
|
bridge: vmbr0
|
|
tag: 42
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Nic net5 unchanged on VM with vmid {{ vmid }}"
|
|
|
|
- name: Update NIC with changes
|
|
proxmox_nic:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
vmid: "{{ vmid }}"
|
|
state: present
|
|
interface: net5
|
|
bridge: vmbr0
|
|
tag: 24
|
|
firewall: true
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Nic net5 updated on VM with vmid {{ vmid }}"
|
|
|
|
- name: Delete NIC
|
|
proxmox_nic:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
vmid: "{{ vmid }}"
|
|
state: absent
|
|
interface: net5
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Nic net5 deleted on VM with vmid {{ vmid }}"
|
|
|
|
- name: Create new disk in VM
|
|
tags: ['create_disk']
|
|
block:
|
|
- name: Add new disk (without force) to VM
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
storage: "{{ storage }}"
|
|
size: 1
|
|
state: present
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} created in VM {{ vmid }}"
|
|
|
|
- name: Try add disk again with same options (expect no-op)
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
storage: "{{ storage }}"
|
|
size: 1
|
|
state: present
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} is up to date in VM {{ vmid }}"
|
|
|
|
- name: Add new disk replacing existing disk (detach old and leave unused)
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
storage: "{{ storage }}"
|
|
size: 2
|
|
create: forced
|
|
state: present
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} created in VM {{ vmid }}"
|
|
|
|
- name: Update existing disk in VM
|
|
tags: ['update_disk']
|
|
block:
|
|
- name: Update disk configuration
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
backup: false
|
|
ro: true
|
|
aio: native
|
|
state: present
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} updated in VM {{ vmid }}"
|
|
|
|
- name: Grow existing disk in VM
|
|
tags: ['grow_disk']
|
|
block:
|
|
- name: Increase disk size
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
size: +1G
|
|
state: resized
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} resized in VM {{ vmid }}"
|
|
|
|
- name: Detach disk and leave it unused
|
|
tags: ['detach_disk']
|
|
block:
|
|
- name: Detach disk
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
state: detached
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} detached from VM {{ vmid }}"
|
|
|
|
- name: Move disk to another storage or another VM
|
|
tags: ['move_disk']
|
|
block:
|
|
- name: Move disk to another storage inside same VM
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
target_storage: "{{ target_storage }}"
|
|
format: "{{ target_format }}"
|
|
state: moved
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} moved from VM {{ vmid }} storage {{ results.storage }}"
|
|
|
|
- name: Move disk to another VM (same storage)
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ vmid }}"
|
|
disk: "{{ disk }}"
|
|
target_vmid: "{{ target_vm }}"
|
|
target_disk: "{{ target_disk }}"
|
|
state: moved
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ vmid }}
|
|
- results.msg == "Disk {{ disk }} moved from VM {{ vmid }} storage {{ results.storage }}"
|
|
|
|
|
|
- name: Remove disk permanently
|
|
tags: ['remove_disk']
|
|
block:
|
|
- name: Remove disk
|
|
proxmox_disk:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
vmid: "{{ target_vm }}"
|
|
disk: "{{ target_disk }}"
|
|
state: absent
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is changed
|
|
- results.vmid == {{ target_vm }}
|
|
- results.msg == "Disk {{ target_disk }} removed from VM {{ target_vm }}"
|
|
|
|
- name: VM stop
|
|
tags: [ 'stop' ]
|
|
block:
|
|
- name: Stop test VM
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: stopped
|
|
register: results_action_stop
|
|
|
|
- assert:
|
|
that:
|
|
- results_action_stop is changed
|
|
- results_action_stop.status == 'running'
|
|
- results_action_stop.vmid == {{ vmid }}
|
|
- results_action_stop.msg == "VM {{ vmid }} is shutting down"
|
|
|
|
- pause:
|
|
seconds: 5
|
|
|
|
- name: Check current status again
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: current
|
|
register: results_action_current
|
|
|
|
- assert:
|
|
that:
|
|
- results_action_current is not changed
|
|
- results_action_current.status == 'stopped'
|
|
- results_action_current.vmid == {{ vmid }}
|
|
- results_action_current.msg == "VM test-instance with vmid = {{ vmid }} is stopped"
|
|
|
|
- name: VM destroy
|
|
tags: [ 'destroy' ]
|
|
block:
|
|
- name: Destroy test VM
|
|
proxmox_kvm:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
proxmox_default_behavior: "no_defaults"
|
|
node: "{{ node }}"
|
|
vmid: "{{ vmid }}"
|
|
state: absent
|
|
register: results_kvm_destroy
|
|
|
|
- assert:
|
|
that:
|
|
- results_kvm_destroy is changed
|
|
- results_kvm_destroy.vmid == {{ vmid }}
|
|
- results_kvm_destroy.msg == "VM {{ vmid }} removed"
|
|
|
|
- name: Retrieve information about nodes
|
|
proxmox_node_info:
|
|
api_host: "{{ api_host }}"
|
|
api_user: "{{ user }}@{{ domain }}"
|
|
api_password: "{{ api_password | default(omit) }}"
|
|
api_token_id: "{{ api_token_id | default(omit) }}"
|
|
api_token_secret: "{{ api_token_secret | default(omit) }}"
|
|
validate_certs: "{{ validate_certs }}"
|
|
register: results
|
|
|
|
- assert:
|
|
that:
|
|
- results is not changed
|
|
- results.proxmox_nodes is defined
|
|
- results.proxmox_nodes|length >= 1
|
|
- results.proxmox_nodes[0].type == 'node'
|