Spdk/scripts/vagrant/Vagrantfile
Lavar Askew 1cbd14ca1b Boxes to support libvirt as provider. Virtualbox set as default.
For ubuntu18 and 16 logic added to only download sjohnsen boxes if
provider is libvirt.

Also changed PROVIDER to SPDK_VAGRANT_PROVIDER and initialized to
virtualbox.  Now the directory of the default provider should
read unbuntu16-virtualbox as opposed to ubuntu16-.

Change-Id: I6cac03432b02cfd259759d504ec133d29d1f740e
Signed-off-by: Lavar Askew <open.hyperion@gmail.com>
Reviewed-on: https://review.gerrithub.io/434599
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
2018-12-06 00:30:04 +00:00

175 lines
6.8 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
# Pick the right distro and bootstrap, default is fedora26
distro = ( ENV['SPDK_VAGRANT_DISTRO'] || "fedora26")
provider = (ENV['SPDK_VAGRANT_PROVIDER'] || "virtualbox")
case distro
when "centos7"
config.vm.box = "puppetlabs/centos-7.2-64-nocm"
config.ssh.insert_key = false
# Puppetlabs does not provide libvirt Box so we will use official one
config.vm.provider :libvirt do |libvirt|
config.vm.box = "centos/7"
end if Vagrant.has_plugin?('vagrant-libvirt')
when "ubuntu16"
if provider.eql?("libvirt")
# https://app.vagrantup.com/sjohnsen/boxes/ubuntu1604
config.vm.box = "sjohnsen/ubuntu1604"
else
# See: https://app.vagrantup.com/puppetlabs/boxes/ubuntu-16.04-64-nocm
config.vm.box = "puppetlabs/ubuntu-16.04-64-nocm"
config.vm.box_version = "1.0.0"
end
when "ubuntu18"
if provider.eql?("libvirt")
# https://app.vagrantup.com/sjohnsen/boxes/ubuntu1804
config.vm.box = "sjohnsen/ubuntu1804"
else
# See: https://app.vagrantup.com/bento/boxes/ubuntu-18.04
config.vm.box = "bento/ubuntu-18.04"
config.vm.box_version = "201803.24.0"
end
when "fedora26"
#See: https://app.vagrantup.com/generic/boxes/fedora2
config.vm.box = "generic/fedora26"
when "fedora27"
#See: https://app.vagrantup.com/generic/boxes/fedora27
config.vm.box = "generic/fedora27"
when "fedora28"
#See: https://app.vagrantup.com/generic/boxes/fedora28
config.vm.box = "generic/fedora28"
when "freebsd11"
#See: https://app.vagrantup.com/generic/boxes/freebsd11
config.vm.box = "generic/freebsd11"
if File.file?(File.expand_path("~/vagrant_pkg.conf"))
config.vm.provision "file", source: "~/vagrant_pkg.conf", destination: "pkg.conf"
config.vm.provision "shell", inline: "sudo mv pkg.conf /usr/local/etc/pkg.conf"
config.vm.provision "shell", inline: "sudo chown root:wheel /usr/local/etc/pkg.conf"
config.vm.provision "shell", inline: "sudo chmod 644 /usr/local/etc/pkg.conf"
end
else
"Invalid argument #{distro}"
abort("Invalid argument!")
end
config.vm.box_check_update = false
# Copy in the .gitconfig if it exists
if File.file?(File.expand_path("~/.gitconfig"))
config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
# Copy the tsocks configuration file for use when installing some spdk test pool dependencies
if File.file?("/etc/tsocks.conf")
config.vm.provision "file", source: "/etc/tsocks.conf", destination: "tsocks.conf"
config.vm.provision "shell", inline: "sudo mv tsocks.conf /etc/tsocks.conf"
config.vm.provision "shell", inline: "sudo chown root:wheel /etc/tsocks.conf"
config.vm.provision "shell", inline: "sudo chmod 644 /etc/tsocks.conf"
end
# vagrant-cachier caches apt/yum etc to speed subsequent
# vagrant up
# to enable, run
# vagrant plugin install vagrant-cachier
#
if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
end
config.vm.network "private_network", type: "dhcp"
# use http proxy if avaiable
if ENV['http_proxy'] && Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = ENV['http_proxy']
config.proxy.https = ENV['https_proxy']
config.proxy.no_proxy = "localhost,127.0.0.1"
end
vmcpu=(ENV['SPDK_VAGRANT_VMCPU'] || 2)
vmram=(ENV['SPDK_VAGRANT_VMRAM'] || 4096)
spdk_dir=(ENV['SPDK_DIR'] || "none")
vhost_host_dir=(ENV['VHOST_HOST_DIR'] || "none")
vhost_vm_dir=(ENV['VHOST_VM_DIR'] || "none")
config.ssh.forward_agent = true
config.ssh.forward_x11 = true
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.memory = "#{vmram}"
vb.cpus = "#{vmcpu}"
nvme_disk=(ENV['NVME_FILE'] || "nvme_disk.img")
unless File.exist? (nvme_disk)
vb.customize ["createhd", "--filename", nvme_disk, "--variant", "Fixed", "--size", "1024"]
vb.customize ["storagectl", :id, "--name", "nvme", "--add", "pcie", "--controller", "NVMe", "--portcount", "1", "--bootable", "off"]
vb.customize ["storageattach", :id, "--storagectl", "nvme", "--type", "hdd", "--medium", nvme_disk, "--port", "0"]
end
#support for the SSE4.x instruction is required in some versions of VB.
vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.1", "1"]
vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.2", "1"]
end
# This setup was Tested on Fedora 27
# libvirt configuration need modern Qemu(tested on 2.10) & vagrant-libvirt in version 0.0.39+
# There are few limitation for SElinux - The file added outside libvirt must have proper SE ACL policy or setenforce 0
config.vm.provider "libvirt" do |libvirt, override|
libvirt.random_hostname = "1"
libvirt.disk_bus = "virtio"
# we put nvme_disk inside default pool to eliminate libvirt/SELinux Permissions Problems
# and to be able to run vagrant from user $HOME directory
if ENV['NVME_FILE']
nvme_disk="/var/lib/libvirt/images/" + ENV['NVME_FILE']
else
nvme_disk="/var/lib/libvirt/images/nvme_disk.img"
end
unless File.exist? (nvme_disk)
puts "If run with libvirt provider please execute create_nvme_img.sh"
end
libvirt.qemuargs :value => "-drive"
libvirt.qemuargs :value => "file=#{nvme_disk},if=none,id=D22"
libvirt.qemuargs :value => "-device"
libvirt.qemuargs :value => "nvme,drive=D22,serial=1234"
libvirt.driver = "kvm"
libvirt.graphics_type = "spice"
libvirt.memory = "#{vmram}"
libvirt.cpus = "#{vmcpu}"
libvirt.video_type = "qxl"
# Optional field if we want use other storage pools than default
# libvirt.storage_pool_name = "vm"
end
# rsync the spdk directory if provision hasn't happened yet
if ENV['COPY_SPDK_DIR'] == "1" && spdk_dir != "none"
config.vm.synced_folder "#{spdk_dir}", "/home/vagrant/spdk_repo/spdk", type: "rsync", rsync__auto: false
end
# provision the vm with all of the necessary spdk dependencies for running the autorun.sh tests
if ENV['DEPLOY_TEST_VM'] == "1" && spdk_dir != "none"
config.vm.provision "shell" do |setup|
setup.path = "#{spdk_dir}/test/common/config/vm_setup.sh"
setup.privileged = false
setup.args = ["-u", "-i"]
end
end
if vhost_host_dir != "none"
config.vm.synced_folder "#{vhost_host_dir}", "#{vhost_vm_dir}", type: "rsync", rsync__auto: false
config.vm.provision "shell", inline: "sudo mkdir -p /root/.ssh"
config.vm.provision "shell", inline: "sudo cp #{vhost_vm_dir}/spdk_vhost_id_rsa* /root/.ssh"
config.vm.provision "shell", inline: "sudo chmod 600 /root/.ssh/spdk_vhost_id_rsa"
end
# Copy in the user's tools if they exists
if File.directory?(File.expand_path("~/vagrant_tools"))
config.vm.synced_folder "~/vagrant_tools", "/home/vagrant/tools", type: "rsync", rsync__auto: false
end
end