summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Bobov <abobov@gmail.com>2018-01-18 21:07:55 +0500
committerAnton Bobov <abobov@gmail.com>2018-01-18 21:07:55 +0500
commitd9bb1632d27d65ce6c4ddf2758f8d51b9d37ccfb (patch)
tree16f66d723e4b4c3834cc46ccf3b3b31b57eab0ad
parent941a793cbcf906725eec549a60eef3b3b3e80980 (diff)
[kvm] Simple kvm image clone script.
-rwxr-xr-xvclone35
1 files changed, 35 insertions, 0 deletions
diff --git a/vclone b/vclone
new file mode 100755
index 0000000..e2c3194
--- /dev/null
+++ b/vclone
@@ -0,0 +1,35 @@
+#!/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"
+echo "Cloning... Done."
+echo "Preparing..."
+virt-sysprep --quiet --domain "$NAME" --hostname "$NAME"
+echo "Preparing... Done."