]>
git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/scripts/vagrant/create_vbox.sh
5 # Creates a virtual box with vagrant in the $PWD.
7 # This script creates a subdirectory called $PWD/<distro> and copies the Vagrantfile
8 # into that directory before running 'vagrant up'
12 DIR
="$( cd "$
( dirname $0 )" && pwd )"
13 SPDK_DIR
="$( cd "${DIR}/..
/..
/" && pwd )"
15 # The command line help
18 echo " Usage: ${0##*/} [-b nvme-backing-file] [-n <num-cpus>] [-s <ram-size>] [-x <http-proxy>] [-hvrld] <distro>"
20 echo " distro = <centos7 | ubuntu16 | ubuntu18 | fedora26 | fedora27 | freebsd11> "
22 echo " -b <nvme-backing-file> default: ${NVME_FILE}"
23 echo " -s <ram-size> in kb default: ${SPDK_VAGRANT_VMRAM}"
24 echo " -n <num-cpus> 1 to 4 default: ${SPDK_VAGRANT_VMCPU}"
25 echo " -x <http-proxy> default: \"${SPDK_VAGRANT_HTTP_PROXY}\""
26 echo " -p <provider> libvirt or virtualbox"
27 echo " --vhost-host-dir=<path> directory path with vhost test dependencies"
28 echo " (test VM qcow image, fio binary, ssh keys)"
29 echo " --vhost-vm-dir=<path> directory where to put vhost dependencies in VM"
31 echo " -l use a local copy of spdk, don't try to rsync from the host."
32 echo " -d deploy a test vm by provisioning all prerequisites for spdk autotest"
38 echo " $0 -x http://user:password@host:port fedora27"
39 echo " $0 -s 2048 -n 2 ubuntu16"
40 echo " $0 -rv freebsd"
45 # Set up vagrant proxy. Assumes git-bash on Windows
46 # https://stackoverflow.com/questions/19872591/how-to-use-vagrant-in-a-proxy-environment
47 SPDK_VAGRANT_HTTP_PROXY
=""
54 SPDK_VAGRANT_DISTRO
="distro"
56 SPDK_VAGRANT_VMRAM
=4096
57 SPDK_VAGRANT_PROVIDER
="virtualbox"
59 NVME_FILE
="nvme_disk.img"
61 while getopts ":b:n:s:x:p:vrldh-:" opt
; do
65 vhost-host-dir
=*) VHOST_HOST_DIR
="${OPTARG#*=}" ;;
66 vhost-vm-dir
=*) VHOST_VM_DIR
="${OPTARG#*=}" ;;
67 *) echo "Invalid argument '$OPTARG'" ;;
72 https_proxy
=$http_proxy
73 SPDK_VAGRANT_HTTP_PROXY
="${http_proxy}"
76 SPDK_VAGRANT_VMCPU
=$OPTARG
79 SPDK_VAGRANT_VMRAM
=$OPTARG
82 SPDK_VAGRANT_PROVIDER
=$OPTARG
104 echo " Invalid argument: -$OPTARG" >&2
105 echo " Try: \"$0 -h\"" >&2
111 shift "$((OPTIND-1))" # Discard the options and sentinel --
113 SPDK_VAGRANT_DISTRO
="$@"
115 case "$SPDK_VAGRANT_DISTRO" in
117 export SPDK_VAGRANT_DISTRO
120 export SPDK_VAGRANT_DISTRO
123 export SPDK_VAGRANT_DISTRO
126 export SPDK_VAGRANT_DISTRO
129 export SPDK_VAGRANT_DISTRO
132 export SPDK_VAGRANT_DISTRO
135 export SPDK_VAGRANT_DISTRO
138 echo " Invalid argument \"${SPDK_VAGRANT_DISTRO}\""
139 echo " Try: \"$0 -h\"" >&2
144 if ! echo "$SPDK_VAGRANT_DISTRO" |
grep -q fedora
&& [ $DEPLOY_TEST_VM -eq 1 ]; then
145 echo "Warning: Test machine deployment is only available on fedora distros. Disabling it for this build"
149 if [ ${VERBOSE} = 1 ]; then
152 echo SPDK_DIR
=${SPDK_DIR}
153 echo VAGRANT_TARGET
=${VAGRANT_TARGET}
155 echo DRY_RUN
=$DRY_RUN
156 echo NVME_FILE
=$NVME_FILE
157 echo SPDK_VAGRANT_DISTRO
=$SPDK_VAGRANT_DISTRO
158 echo SPDK_VAGRANT_VMCPU
=$SPDK_VAGRANT_VMCPU
159 echo SPDK_VAGRANT_VMRAM
=$SPDK_VAGRANT_VMRAM
160 echo SPDK_VAGRANT_PROVIDER
=$SPDK_VAGRANT_PROVIDER
161 echo SPDK_VAGRANT_HTTP_PROXY
=$SPDK_VAGRANT_HTTP_PROXY
162 echo VHOST_HOST_DIR
=$VHOST_HOST_DIR
163 echo VHOST_VM_DIR
=$VHOST_VM_DIR
167 export SPDK_VAGRANT_HTTP_PROXY
168 export SPDK_VAGRANT_VMCPU
169 export SPDK_VAGRANT_VMRAM
172 export DEPLOY_TEST_VM
175 if [ -n "$SPDK_VAGRANT_PROVIDER" ]; then
176 provider
="--provider=${SPDK_VAGRANT_PROVIDER}"
179 if [ -n "$VHOST_HOST_DIR" ]; then
180 export VHOST_HOST_DIR
183 if [ -n "$VHOST_VM_DIR" ]; then
187 if [ -n "$SPDK_VAGRANT_PROVIDER" ]; then
188 export SPDK_VAGRANT_PROVIDER
191 if [ ${DRY_RUN} = 1 ]; then
192 echo "Environemnt Variables"
193 printenv SPDK_VAGRANT_DISTRO
194 printenv SPDK_VAGRANT_VMRAM
195 printenv SPDK_VAGRANT_VMCPU
196 printenv SPDK_VAGRANT_PROVIDER
197 printenv SPDK_VAGRANT_HTTP_PROXY
201 if [ -d "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER}" ]; then
202 echo "Error: ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER} already exists!"
206 if [ ${DRY_RUN} != 1 ]; then
207 mkdir
-vp "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER}"
208 cp ${DIR}/Vagrantfile ${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER}
209 pushd "${VAGRANT_TARGET}/${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER}"
210 if [ ! -z "${http_proxy}" ]; then
213 if vagrant plugin list |
grep -q vagrant-proxyconf
; then
214 echo "vagrant-proxyconf already installed... skipping"
216 vagrant plugin
install vagrant-proxyconf
218 if echo "$SPDK_VAGRANT_DISTRO" |
grep -q freebsd
; then
219 cat >~
/vagrant_pkg.conf
<<EOF
221 http_proxy: ${http_proxy}
230 echo " cd to ${SPDK_VAGRANT_DISTRO}-${SPDK_VAGRANT_PROVIDER} and type \"vagrant ssh\" to use."
231 echo " Use vagrant \"suspend\" and vagrant \"resume\" to stop and start."
232 echo " Use vagrant \"destroy\" followed by \"rm -rf ${SPDK_VAGRANT_DISTRO}\" to destroy all trace of vm."