diff --git a/buildserver/Vagrantfile b/buildserver/Vagrantfile index 51db27d3..c182e07e 100644 --- a/buildserver/Vagrantfile +++ b/buildserver/Vagrantfile @@ -15,10 +15,28 @@ Vagrant.configure("2") do |config| config.vm.box = configfile['basebox'] config.vm.box_url = configfile['baseboxurl'] - config.vm.provider "virtualbox" do |v| - v.customize ["modifyvm", :id, "--memory", configfile['memory']] - v.customize ["modifyvm", :id, "--cpus", configfile['cpus']] - v.customize ["modifyvm", :id, "--hwvirtex", configfile['hwvirtex']] + # TODO detect if jessie64.box is libvirt, or `vagrant mutate jessie64 libvirt` + if `systemd-detect-virt`.include? "qemu" or configfile["vm_provider"] == "libvirt" + # use KVM/QEMU if this is running in KVM/QEMU + config.vm.provider :libvirt do |libvirt| + libvirt.driver = "kvm" + libvirt.host = "localhost" + libvirt.uri = "qemu:///system" + libvirt.cpus = configfile["cpus"] + libvirt.memory = configfile["memory"] + end + config.vm.synced_folder './', '/vagrant', type: '9p' + synced_folder_type = '9p' + elsif not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox" + # default to VirtualBox if not set + config.vm.provider "virtualbox" do |v| + v.customize ["modifyvm", :id, "--memory", configfile['memory']] + v.customize ["modifyvm", :id, "--cpus", configfile['cpus']] + v.customize ["modifyvm", :id, "--hwvirtex", configfile['hwvirtex']] + end + synced_folder_type = 'virtualbox' + else + abort("No supported VM Provider found, set vm_provider in Vagrantfile.yaml!") end config.vm.boot_timeout = configfile['boot_timeout'] @@ -32,7 +50,7 @@ Vagrant.configure("2") do |config| # default does not need a custom mount if configfile["cachedir"] != "buildserver/cache" config.vm.synced_folder configfile["cachedir"], '/vagrant/cache', - owner: 'root', group: 'root', create: true + create: true, type: synced_folder_type end # cache .deb packages on the host via a mount trick