Files
kvm-cloudimage/base_scripts/vm_delete.sh

42 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# Function for usage message
usage() {
cat << EOF
Usage: $0 vm_name
This script removes a virtual machine managed by virsh.
EOF
}
VM_BASE_DIR="${VM_BASE_DIR:-${HOME}/vms}"
VM_IMAGE_PATH="${VM_BASE_DIR}/images/$1.img"
CI_IMAGE_PATH="${VM_BASE_DIR}/images/$1-cidata.iso"
# Validate VM name argument
if [[ -z "$1" ]]; then
usage
exit 1
fi
# Check if VM exists
if [[ -f "$VM_IMAGE_PATH" ]]; then
# Safely remove the VM with confirmation
read -p "Are you sure you want to remove the VM '$1' (y/N)? " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
# Attempt to stop the VM before deleting
virsh destroy "$1" 2>/dev/null || true
# Delete VM definition and associated images
virsh undefine "$1" 2>/dev/null || true
rm -fv "$VM_IMAGE_PATH" "$CI_IMAGE_PATH"
rm ${VM_BASE_DIR}/xml/$1.xml
rm ${VM_BASE_DIR}/ssh/$1*
rm ${VM_BASE_DIR}/init/$1-user-data
rm ${VM_BASE_DIR}/init/$1-meta-data
else
echo "VM removal cancelled."
fi
else
# Handle case where VM image is not found
echo "Cannot find VM image file '$VM_IMAGE_PATH'. No action taken."
fi