Files
homelab/plays/destroy-ha-dev-vm.yml
T

91 lines
2.6 KiB
YAML

---
- name: Destroy Home Assistant Dev Environment
hosts: pve_cluster
become: true
run_once: true
vars:
vm_name: homeassistant-dev
dns_zone_file: /etc/bind/zones/db.nerdcave.eu
tasks:
# -------------------------------------------------------
# 1. DNS Cleanup
# -------------------------------------------------------
- name: Remove CNAME Record from Bind
delegate_to: bind1.srv.renner.uno
lineinfile:
path: "{{ dns_zone_file }}"
regexp: "^{{ vm_name }} IN CNAME"
state: absent
register: dns_record_removed
ignore_unreachable: true
ignore_errors: true
- name: Increment Zone Serial
delegate_to: bind1.srv.renner.uno
shell: |
sed -i -r 's/([0-9]{10})(\s+;\s+Serial)/echo $((\1 + 1))\2/e' {{ dns_zone_file }}
args:
executable: /bin/bash
when:
- dns_record_removed.changed
- not dns_record_removed.failed | default(false)
ignore_unreachable: true
ignore_errors: true
notify: Reload Bind
# -------------------------------------------------------
# 2. Caddy Cleanup
# -------------------------------------------------------
- name: Remove Caddy Configuration
delegate_to: caddy.srv.renner.uno
blockinfile:
path: /etc/caddy/Caddyfile
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ vm_name }}"
state: absent
notify: Reload Caddy
ignore_unreachable: true
ignore_errors: true
# -------------------------------------------------------
# 3. VM Cleanup
# -------------------------------------------------------
- name: Find VM IDs for {{ vm_name }}
shell: "qm list | grep ' {{ vm_name }} ' | awk '{print $1}'"
register: vm_ids_out
changed_when: false
ignore_errors: true
- name: Stop VMs
command: "qm stop {{ item }}"
loop: "{{ vm_ids_out.stdout_lines }}"
when:
- vm_ids_out.rc == 0
- vm_ids_out.stdout_lines | length > 0
ignore_errors: true
- name: Destroy VMs
command: "qm destroy {{ item }} --purge"
loop: "{{ vm_ids_out.stdout_lines }}"
when:
- vm_ids_out.rc == 0
- vm_ids_out.stdout_lines | length > 0
ignore_errors: true
handlers:
- name: Reload Bind
delegate_to: bind1.srv.renner.uno
service:
name: bind9
state: reloaded
ignore_unreachable: true
ignore_errors: true
- name: Reload Caddy
delegate_to: caddy.srv.renner.uno
service:
name: caddy
state: reloaded
ignore_unreachable: true
ignore_errors: true