42 lines
1.1 KiB
Bash
Executable File
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 |