summaryrefslogtreecommitdiff
path: root/vclone
blob: cf3fdaff1b3e8945170f4376fdd8acc9b4549012 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash

set -e

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    sudo $(realpath $0)
    exit
fi

select_base_vm() {
    mapfile vms < <(virsh list --inactive --name)

    echo "All inactive VMs" >&2
    printf "%s\n" ${vms[@]} | nl >&2
    read -p "Index of base VM: " INDEX 
    echo ${vms[$INDEX-1]}
}

die() {
    echo $*
    exit 1
}

BASE_IMAGE="$(select_base_vm)"
[ -z "$BASE_IMAGE" ] && die "No base image selected."

read -p "Enter new image name: " NAME
[ -z "$NAME" ] && die "No new image name."

echo "Cloning..."
virt-clone --quiet --original "$BASE_IMAGE" --auto-clone --name "$NAME"
virsh desc --new-desc '' "$NAME"
virsh desc --title --new-desc "clone/$NAME" "$NAME"
echo "Cloning... Done."
echo "Preparing..."
virt-sysprep --quiet --domain "$NAME" --hostname "$NAME"
echo "Preparing... Done."