Working with a volunteer in this at the hackathon.
Some things we are trying:
$ vagrant plugin install vagrant-kvm
$ vagrant plugin install vagrant-mutate
$ vagrant mutate trusty-cloud kvm
$ vagrant up --provider=kvm
You may need things like:
$ apt-get install redir
$ apt-get install apparmor-utils
$ sudo aa-complain /usr/lib/libvert/virt-aa-helper
I'm interested in this because using KVM and VirtualBox is mutually exclusive and for my distribution (Fedora) libvirt seems to be the preferred virtualization solution. I added:
# libvirt (KVM/QEMU) provider config.vm.provider :libvirt do |_libvirt, override| override.vm.box = 'trusty-cloud' override.vm.network :private_network, ip: settings[:static_ip] end
config.vm.provider :libvirt do |libvirt| libvirt.driver = 'qemu' end
to Vagrantfile. I then converted the trusty-cloud box that VirtualBox is downloading with vagrant mutate to a libvirt box (it would be nice if in the long run there would be an official/trustable source for an already-converted box).
After that, a vagrant up (Vagrant 1.7.4, vagrant-libvirt 0.0.30) times out on my system when trying to mount NFS. If I vagrant ssh afterwards and try to repeat the mount:
vagrant@mediawiki-vagrant:~$ sudo mount -o 'vers=3,udp' 192.168.121.1:'/home/tim/src/mediawiki-vagrant/libvirt-test' /vagrant mount.nfs: Connection timed out vagrant@mediawiki-vagrant:~$
(A NFS server with /etc/exports set up by vagrant is running on the host.)
As I had trouble with NFS with VirtualBox as well, I also tried 9p by adding type: '9p' to config.vm.synced_folder calls. This will fail first – as shown by sudo dmesg | tail on the guest – because it doesn't understand the mount option access=vagrant. If I remove that option, the mount "succeeds", but any access (sudo ls -l /vagrant) fails with access denied.
The last resort type: 'rsync' worked (AFAICT; Puppet is still running), but as its functionality is severely limited compared to NFS and 9p, that's not a real-life option.
9p failed due to owner being set to vagrant in synced_folder which produces the access=vagrant option for the mount call; I have filed that upstream. To work around that/fix that on mediawiki/vagrant's side, owner would need not to be set when nfs_shares is false.
But I've run into general permission problems on my host then (the VM not being allowed to read/write my directory), so I couldn't test so far that that will indeed work.
(NFS failed first because the firewall blocked it and, after I fixed that, because it requires vers=3 as a mount option from a Trusty client to a Fedora 23 server. I will submit a patch that introduces a nfs_force_v3 option for that.)
https://gerrit.wikimedia.org/r/280785, https://gerrit.wikimedia.org/r/280786 and https://gerrit.wikimedia.org/r/280787 are a snapshot of my current progess. It's still abysmally slow, and commenting out shared_apt_cache is just one case where the VM failed when trying to write as root to the shared folder. The POC in T128304#2081875 is much better for libvirt on my machine.