observability.svc.plus/vagrant/nuke
2026-02-01 20:53:55 +08:00

39 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# ==============================================================#
# File : nuke
# Desc : nuke vagrant VMs/Disks with virsh (DANGEROUS!)
# Ctime : 2023-07-29
# Mtime : 2025-03-21
# Path : vagrant/nuke
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
# ==============================================================#
SCRIPT_NAME="$(basename $0)"
SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
# if virsh is not installed, exit
if ! command -v virsh &> /dev/null
then
echo "virsh could not be found, exit"
exit 1
fi
# this will destroy all vagrant VMs and Volumes, DO USE WITH CAUTION!
echo "====================================="
echo "destroy and undefine all vagrant VMs"
virsh list --all | grep "vagrant_"
virsh list --all | grep "vagrant_" | awk '{print $2}' | xargs -I {} virsh destroy {}
virsh list --all | grep "vagrant_" | awk '{print $2}' | xargs -I {} virsh undefine {}
virsh list --all | grep "vagrant_"
echo "====================================="
echo "destroy and undefine all vagrant volumes"
virsh vol-list default | grep '^ vagrant_' | awk '{print $1}'
virsh vol-list default | grep '^ vagrant_' | awk '{print $1}' | xargs -I {} virsh vol-delete --pool default {}
virsh vol-list default | grep '^ vagrant_' | awk '{print $1}'
echo "====================================="
echo "destroy ${SCRIPT_DIR}/.vagrant cache"
rm -rf "${SCRIPT_DIR}/.vagrant"