kloudbuster/kloudbuster/kb_extract_img_from_docker.sh

87 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Scriot to extract the same version kloudbuster VM image from docker hub
# and store it on the current directory
# Should be used when running kloudbuster using PyPI or git clone and
# rebuilding the VM is not an option
# Requires kloudbuster to be installed (pip install -e .)
# Requires docker to be installed!
function usage {
echo "
Usage: kb_extract_img_from_docker.sh [--version <version>]
<version> optional KloudBuster version to extract (e.g. 7.0.0)
Extracts a KloudBuster VM image from DockerHub and stores it on the local directory
If version is provided, the image for that version is retrieved
If version is not provided, the image for the current KloudBuster installation is
retrieved (requires KloudBuster to be installed using 'pip install -e .')
This script should only be used when not running KloudBuster from Docker
(e.g. running it from pip or from a git clone) and when rebuilding the VM image
is not an option.
"
exit 1
}
# Get the exact version
# Get the kloudbuster version (must be retrieved from stderr)
function get_kloudbuster_version {
KB_VER=$(kloudbuster --version 2>&1)
if [ $? != 0 ]; then
echo "Error running kloudbuster, make sure it is installed with 'pip install -e .'"
echo
exit 2
fi
}
function extract_vm_image {
VM_IMG_NAME=kloudbuster-$KB_VER.qcow2
if [ -f $VM_IMG_NAME ]; then
echo "$VM_IMG_NAME is already available"
else
# Pull the right version container from docker hub
IMG_NAME=berrypatch/kloudbuster:$KB_VER
docker pull $IMG_NAME
if [ $? != 0 ]; then
echo "Error pulling $IMG_NAME, please check it is available"
exit 1
fi
docker run --rm -v $PWD:/tmp/local $IMG_NAME cp /kloudbuster/$VM_IMG_NAME /tmp/local
if [ $? != 0 ]; then
echo "Error extracting $VM_IMG_NAME from the container"
exit 3
else
echo "Successfully extracted $VM_IMG_NAME from the container"
fi
fi
ls -l $VM_IMG_NAME
}
KB_VER=0
while [[ $# -gt 0 ]]; do
key="$1"
case "$key" in
--version|-v)
KB_VER=$2
shift
;;
-h|--help|*)
usage
;;
esac
# Shift after checking all the cases to get the next option
shift
done
if [ $KB_VER = 0 ]; then
get_kloudbuster_version
fi
extract_vm_image