The vagrant proxy plugin doesn't appear to support FreeBSD or pkg in the same way that it supports linux distros and their associated package managers. This change supplies the needed proxy configuration to get around this issue. Change-Id: I7dfbd963c5fd01d598c1456c5d8139be81777440 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/426422 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
201 lines
4.6 KiB
Bash
Executable File
201 lines
4.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# create_vbox.sh
|
|
#
|
|
# Creates a virtual box with vagrant in the $PWD.
|
|
#
|
|
# This script creates a subdirectory called $PWD/<distro> and copies the Vagrantfile
|
|
# into that directory before running 'vagrant up'
|
|
|
|
VAGRANT_TARGET="$PWD"
|
|
|
|
DIR="$( cd "$( dirname $0 )" && pwd )"
|
|
SPDK_DIR="$( cd "${DIR}/../../" && pwd )"
|
|
|
|
# The command line help
|
|
display_help() {
|
|
echo
|
|
echo " Usage: ${0##*/} [-n <num-cpus>] [-s <ram-size>] [-x <http-proxy>] [-hvr] <distro>"
|
|
echo
|
|
echo " distro = <centos7 | ubuntu16 | ubuntu18 | fedora26 | fedora27 | freebsd11> "
|
|
echo
|
|
echo " -s <ram-size> in kb default: ${SPDK_VAGRANT_VMRAM}"
|
|
echo " -n <num-cpus> 1 to 4 default: ${SPDK_VAGRANT_VMCPU}"
|
|
echo " -x <http-proxy> default: \"${SPDK_VAGRANT_HTTP_PROXY}\""
|
|
echo " -p <provider> libvirt or virtualbox"
|
|
echo " --vhost-host-dir=<path> directory path with vhost test dependencies"
|
|
echo " (test VM qcow image, fio binary, ssh keys)"
|
|
echo " --vhost-vm-dir=<path> directory where to put vhost dependencies in VM"
|
|
echo " -r dry-run"
|
|
echo " -h help"
|
|
echo " -v verbose"
|
|
echo
|
|
echo " Examples:"
|
|
echo
|
|
echo " $0 -x http://user:password@host:port fedora27"
|
|
echo " $0 -s 2048 -n 2 ubuntu16"
|
|
echo " $0 -rv freebsd"
|
|
echo " $0 fedora26 "
|
|
echo
|
|
}
|
|
|
|
# Set up vagrant proxy. Assumes git-bash on Windows
|
|
# https://stackoverflow.com/questions/19872591/how-to-use-vagrant-in-a-proxy-environment
|
|
SPDK_VAGRANT_HTTP_PROXY=""
|
|
|
|
VERBOSE=0
|
|
HELP=0
|
|
DRY_RUN=0
|
|
SPDK_VAGRANT_DISTRO="distro"
|
|
SPDK_VAGRANT_VMCPU=4
|
|
SPDK_VAGRANT_VMRAM=4096
|
|
OPTIND=1
|
|
|
|
while getopts ":n:s:x:p:vrh-:" opt; do
|
|
case "${opt}" in
|
|
-)
|
|
case "${OPTARG}" in
|
|
vhost-host-dir=*) VHOST_HOST_DIR="${OPTARG#*=}" ;;
|
|
vhost-vm-dir=*) VHOST_VM_DIR="${OPTARG#*=}" ;;
|
|
*) echo "Invalid argument '$OPTARG'" ;;
|
|
esac
|
|
;;
|
|
x)
|
|
http_proxy=$OPTARG
|
|
https_proxy=$http_proxy
|
|
SPDK_VAGRANT_HTTP_PROXY="${http_proxy}"
|
|
;;
|
|
n)
|
|
SPDK_VAGRANT_VMCPU=$OPTARG
|
|
;;
|
|
s)
|
|
SPDK_VAGRANT_VMRAM=$OPTARG
|
|
;;
|
|
p)
|
|
PROVIDER=$OPTARG
|
|
;;
|
|
v)
|
|
VERBOSE=1
|
|
;;
|
|
r)
|
|
DRY_RUN=1
|
|
;;
|
|
h)
|
|
display_help >&2
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo " Invalid argument: -$OPTARG" >&2
|
|
echo " Try: \"$0 -h\"" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift "$((OPTIND-1))" # Discard the options and sentinel --
|
|
|
|
SPDK_VAGRANT_DISTRO="$@"
|
|
|
|
case "$SPDK_VAGRANT_DISTRO" in
|
|
centos7)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
ubuntu16)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
ubuntu18)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
fedora26)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
fedora27)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
freebsd11)
|
|
export SPDK_VAGRANT_DISTRO
|
|
;;
|
|
*)
|
|
echo " Invalid argument \"${SPDK_VAGRANT_DISTRO}\""
|
|
echo " Try: \"$0 -h\"" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [ ${VERBOSE} = 1 ]; then
|
|
echo
|
|
echo DIR=${DIR}
|
|
echo SPDK_DIR=${SPDK_DIR}
|
|
echo VAGRANT_TARGET=${VAGRANT_TARGET}
|
|
echo HELP=$HELP
|
|
echo DRY_RUN=$DRY_RUN
|
|
echo SPDK_VAGRANT_DISTRO=$SPDK_VAGRANT_DISTRO
|
|
echo SPDK_VAGRANT_VMCPU=$SPDK_VAGRANT_VMCPU
|
|
echo SPDK_VAGRANT_VMRAM=$SPDK_VAGRANT_VMRAM
|
|
echo SPDK_VAGRANT_HTTP_PROXY=$SPDK_VAGRANT_HTTP_PROXY
|
|
echo VHOST_HOST_DIR=$VHOST_HOST_DIR
|
|
echo VHOST_VM_DIR=$VHOST_VM_DIR
|
|
echo
|
|
fi
|
|
|
|
export SPDK_VAGRANT_HTTP_PROXY
|
|
export SPDK_VAGRANT_VMCPU
|
|
export SPDK_VAGRANT_VMRAM
|
|
export SPDK_DIR
|
|
|
|
if [ -n "$PROVIDER" ]; then
|
|
provider="--provider=${PROVIDER}"
|
|
fi
|
|
|
|
if [ -n "$VHOST_HOST_DIR" ]; then
|
|
export VHOST_HOST_DIR
|
|
fi
|
|
|
|
if [ -n "$VHOST_VM_DIR" ]; then
|
|
export VHOST_VM_DIR
|
|
fi
|
|
|
|
if [ ${DRY_RUN} = 1 ]; then
|
|
echo "Environemnt Variables"
|
|
printenv SPDK_VAGRANT_DISTRO
|
|
printenv SPDK_VAGRANT_VMRAM
|
|
printenv SPDK_VAGRANT_VMCPU
|
|
printenv SPDK_VAGRANT_HTTP_PROXY
|
|
printenv SPDK_DIR
|
|
fi
|
|
|
|
if [ -d "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}" ]; then
|
|
echo "Error: ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO} already exists!"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ${DRY_RUN} != 1 ]; then
|
|
mkdir -vp "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}"
|
|
cp ${DIR}/Vagrantfile ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}
|
|
pushd "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}"
|
|
if [ ! -z "${http_proxy}" ]; then
|
|
export http_proxy
|
|
export https_proxy
|
|
if vagrant plugin list | grep -q vagrant-proxyconf; then
|
|
echo "vagrant-proxyconf already installed... skipping"
|
|
else
|
|
vagrant plugin install vagrant-proxyconf
|
|
fi
|
|
if echo "$SPDK_VAGRANT_DISTRO" | grep -q freebsd; then
|
|
cat >~/vagrant_pkg.conf <<EOF
|
|
pkg_env: {
|
|
http_proxy: ${http_proxy}
|
|
}
|
|
EOF
|
|
fi
|
|
fi
|
|
vagrant up $provider
|
|
echo ""
|
|
echo " SUCCESS!"
|
|
echo ""
|
|
echo " cd to ${SPDK_VAGRANT_DISTRO} and type \"vagrant ssh\" to use."
|
|
echo " Use vagrant \"suspend\" and vagrant \"resume\" to stop and start."
|
|
echo " Use vagrant \"destroy\" followed by \"rm -rf ${SPDK_VAGRANT_DISTRO}\" to destroy all trace of vm."
|
|
echo ""
|
|
fi
|