On 26/09/13 22:09, Alex Drahon wrote:
On 24/09/13 06:43, Nathanael Noblet wrote:
On 09/23/2013 06:37 AM, Alexandre Drahon wrote:
Hi all,

I wanted to give an update on the status of Vagrant in Fedora 20, I just realised it's my first post to the list so I'll take this opportunity to introduce myself. I'm Alex, I work at Red Hat as a Solution Architect (ie. nothing engineering related), I wrote the vagrant-kvm plugin on my spare time to make it work on my Fedora laptop, though there's now a (much more qualified) second maintainer who is also providing support for Ubuntu through a PPA. Matthew asked me if I wanted to work on packaging Vagrant and the KVM plugin for Fedora 20, and I foolishly accepted ;)

It's quite exhilarating having the opportunity to contribute to Fedora, and at the same time I feel totally lost. I don't mean this as a criticism, it's just this "first week at school" feeling, it will take me some time to get an idea of how things work. That said, here's the Vagrant situation:

1. I have a vagrant RPM that installs and works as expected, there's some minimal patching involved which has to do with the fact that Vagrant expect to be running in it's own Ruby 1.9.3 environment in /opt
2. There was also some patching involved to make the plugin system work, although I haven't tested plugins extensively (some stuff breaks like rubygems loading path) and providing common plugins as RPMs looks like the better way in Fedora.
3. I had to build my own rubygems-childprocess (current Fedora package is very old) and rubygems-log4r (not provided in Fedora) RPMs, but I don't know how I should submit them (package review ticket?). There's a existing ticket for log4r https://bugzilla.redhat.com/show_bug.cgi?id=905240, I added it as a dependency to the Vagrant ticket.
4. I've packaged vagrant-kvm as a RPM and it installs, but I'm running into serious issues with Policykit. I don't think I'll be able to solve that without help, I'm not even sure what's the right way to do it.

So, as a summary:
 - yum install vagrant should work, at which point you need to install VirtualBox and it will run as expected
 - vagrant-kvm installs but I don't know how to add the right polkit rules (I need help)

Looks pretty good, right?

It does... Since some of the work needed to get this working requires packages that aren't in fedora already are you able to provide a link to a bunch of src.rpms of everything needed. I'd like to test and wanted to help with this feature awhile back but got sidetracked... However I don't have F20 running on anything so would likely use mock to compile for F18 and see if I can help resolve/test/do something like that.


I posted the current source packages here http://srpms.adrahon.org/

Vagrant should work with VirtualBox (http://download.virtualbox.org/virtualbox/4.2.18/VirtualBox-4.2-4.2.18_88780_fedora18-1.x86_64.rpm ).

vagrant-kvm still has issues, not sure it's in a testable state yet.


After trying several solutions, I think I have found the right compromise and finally have working packages (with a some caveats). Again the source packages are at http://srpms.adrahon.org/ :
 - vagrant looks for plugins both in the user's ~/.vagrant.d directory and /usr/share/gems for system-wide plugins (like vagrant-kvm)
 - my patched vagrant version looks in /etc/vagrant for the system-wide plugin registry
 - I added commands to vagrant plugin to manage registration of system-wide plugins (installed with yum)
 - rpm-packaged plugins register/unregister themselves at installation/uninstallation

This means that Vagrant's behaviour hasn't changed and we can still package plugins as RPMs.

How to test:
 - you need to install rubygem-log4r, then vagrant, then rubygem-vagrant-kvm
 - "vagrant init fedora19" (name of your box) then edit the Vagrantfile (you need a private network with a 192.168.192.0 address)
 - "vagrant up --provider=kvm" should work

Caveats:
1. polkit integration is a problem, if you don't have an agent you won't get the right to connect to the libvirt socket
2. a custom polkit rule works, maybe one should be included (as an example)
3. firewalld blocks nfs connections from the guest to the host, so directory sharing will fail. I suppose I need a custom rule, or at least give instructions to the user on how to do it, but I don't know how it works.

1. Isn't a big problem in most cases because you'll have a desktop environment and a polkit agent, I don't know how the console polkit agent works.
2. should be provided in the readme file?
3. this is the main issue now, I need some help, I'm sure it's not to complex but I don't know if an application package should touch the user's firewalld config.

Hope some of you can test it.

Alex