70 lines
1.9 KiB
YAML
70 lines
1.9 KiB
YAML
---
|
|
- name: Delete VMs and all associated disks (PVCs)
|
|
hosts: localhost
|
|
gather_facts: false
|
|
collections:
|
|
- kubernetes.core
|
|
|
|
vars:
|
|
namespace: default
|
|
|
|
vm_names:
|
|
- controller
|
|
- node1
|
|
- node2
|
|
- node3
|
|
- node4
|
|
- node5
|
|
- utility
|
|
|
|
disks:
|
|
- rootdisk
|
|
- disk2
|
|
- disk3
|
|
|
|
tasks:
|
|
###########################################################################
|
|
# Delete VMs
|
|
###########################################################################
|
|
- name: Delete VirtualMachines
|
|
k8s:
|
|
api_version: kubevirt.io/v1
|
|
kind: VirtualMachine
|
|
name: "{{ item }}"
|
|
namespace: "{{ namespace }}"
|
|
state: absent
|
|
loop: "{{ vm_names }}"
|
|
|
|
###########################################################################
|
|
# Wait until VMs are actually gone (IMPORTANT)
|
|
###########################################################################
|
|
- name: Wait for VMs to be fully deleted
|
|
k8s_info:
|
|
api_version: kubevirt.io/v1
|
|
kind: VirtualMachine
|
|
name: "{{ item }}"
|
|
namespace: "{{ namespace }}"
|
|
register: vm_check
|
|
until: vm_check.resources | length == 0
|
|
retries: 30
|
|
delay: 5
|
|
loop: "{{ vm_names }}"
|
|
loop_control:
|
|
label: "{{ item }}"
|
|
|
|
###########################################################################
|
|
# Delete PVCs (no pre-check, safe & idempotent)
|
|
###########################################################################
|
|
- name: Delete PVCs for all VM disks
|
|
k8s:
|
|
api_version: v1
|
|
kind: PersistentVolumeClaim
|
|
name: "{{ item.0 }}-{{ item.1 }}"
|
|
namespace: "{{ namespace }}"
|
|
state: absent
|
|
loop: "{{ vm_names | product(disks) | list }}"
|
|
loop_control:
|
|
label: "{{ item.0 }}-{{ item.1 }}"
|
|
failed_when: false
|
|
|