#!/usr/bin/env bash # Destroy the whole lab: VMs (and their disks), the network, and staged images. # Use --keep-iso to preserve the downloaded Proxmox/Debian ISOs for a faster rebuild. set -uo pipefail source "$(dirname "$0")/lab.env" sudo -v # prompt for the sudo password once, up front KEEP_ISO=0 [[ "${1:-}" == "--keep-iso" ]] && KEEP_ISO=1 echo "==> Destroying VMs" for d in "$PVE1_NAME" "$PVE2_NAME" "$STORE_NAME"; do sudo virsh destroy "$d" 2>/dev/null || true sudo virsh undefine "$d" --remove-all-storage --nvram 2>/dev/null \ || sudo virsh undefine "$d" --remove-all-storage 2>/dev/null || true done echo "==> Removing host NAT/forward rules for ${NET_SUBNET}/${NET_PREFIX}" sudo iptables -t nat -D POSTROUTING -s "${NET_SUBNET}/${NET_PREFIX}" ! -d "${NET_SUBNET}/${NET_PREFIX}" -j MASQUERADE 2>/dev/null || true sudo iptables -D FORWARD -i "${NET_BRIDGE}" -j ACCEPT 2>/dev/null || true sudo iptables -D FORWARD -o "${NET_BRIDGE}" -j ACCEPT 2>/dev/null || true echo "==> Destroying network ${NET_NAME}" sudo virsh net-destroy "$NET_NAME" 2>/dev/null || true sudo virsh net-undefine "$NET_NAME" 2>/dev/null || true echo "==> Removing staged images" sudo rm -f "${LIB_DIR}/${PVE1_NAME}.qcow2" "${LIB_DIR}/${PVE2_NAME}.qcow2" \ "${LIB_DIR}/${STORE_NAME}.qcow2" "${LIB_DIR}/${STORE_NAME}-data.qcow2" \ "${LIB_DIR}/${STORE_NAME}-seed.iso" \ "${LIB_DIR}/pve1-auto.iso" "${LIB_DIR}/pve2-auto.iso" if [[ "$KEEP_ISO" == 0 ]]; then sudo rm -f "${LIB_DIR}/${ISO_FILE}" "${LIB_DIR}/${DEBIAN_IMG}" fi echo "==> Removing the 'pve-lab' storage pool" sudo virsh pool-destroy pve-lab 2>/dev/null || true sudo virsh pool-undefine pve-lab 2>/dev/null || true echo "==> Cleaning build artifacts" rm -rf "${BUILD_DIR}" echo "Teardown complete." [[ "$KEEP_ISO" == 1 ]] && echo "(kept downloaded ISOs in ${LIB_DIR})"