Dec 20, 2015
In a nutshell, Oh-my-vagrant (also called OMV) is a Vagrant wrapper, that helps you easily manipulate your dev environments. By easily, I mean: it’s a couple of minutes (sometimes seconds) before you have your env up’n’running with your favorite updated OS (centos, debian, rhel, and more), your own code and scripts (from github or elsewhere), your preferences, etc. All kinds of awesome!
You can find lot’s of documentation on the project page: https://github.com/purpleidea/oh-my-vagrant
This post is intended to help you easily setup oh-my-vagrant on your Debian box. This requires Debian Jessie minimum.
First, you’ll need to install libvirt and its dependencies:
sudo apt-get install libvirt-bin libvirt-daemon libvirt-clients libvirt0
To allow your user to play with libirvt and kvm (and avoid using sudo), add them to the libvirt/kvm groups:
sudo adduser <your_username> kvm sudo adduser <your_username> libvirt
Now let’s install vagrant and some of the plugins build dependencies:
sudo apt-get install vagrant ruby-libvirt libvirt-dev ruby-nokogiri zlib1g-dev
At this point you should have a functional vagrant environment on your machine.
In order for vagrant to use the libvirt/KVM back-end (instead of the default virtualbox), we will need to install some plugins (at the time of the post the plugins were not packaged into Debian (though an ITP was filed and people started to work on them)).
Let’s install vagrant’s libvirt plugin first:
vagrant plugin install vagrant-libvirt
Then vagrant’s host manager plugin:
vagrant plugin install vagrant-hostmanager
Now let’s clone the oh-my-vragrant repository, and start playing.
~$ git clone --recursive https://github.com/purpleidea/oh-my-vagrant (...) ~$ cd oh-my-vagrant/vagrant ~$ vagrant status Current machine states: omv1 not created (libvirt) The Libvirt domain is not created. Run `vagrant up` to create it.
You can now launch your first VM by typing: vagrant up
~$ vagrant up Bringing machine 'omv1' up with 'libvirt' provider... ==> omv1: Box 'centos-7.1' could not be found. Attempting to find and install... omv1: Box Provider: libvirt omv1: Box Version: >= 0 ==> omv1: Box file was not detected as metadata. Adding it directly... ==> omv1: Adding box 'centos-7.1' (v0) for provider: libvirt omv1: Downloading: https://dl.fedoraproject.org/pub/alt/purpleidea/vagrant/centos-7.1/centos-7.1.box omv1: Progress: 62% (Rate: 932k/s, Estimated time remaining: 0:04:38) (...)
Note: after running it once, the image is cached locally for instant reuse.
It is as easy as that! You can now connect to your virtual machine by simply typing:
~$ vagrant ssh omv1
To destroy your environment:
The default omv.yaml file installs a centos; if you want to launch an Debian installation.
~$ cd oh-my-vagrant/vagrant/ ~$ cp ../examples/debian.yaml omv.yaml ~$ vagrant up
As we are using the libvirt plugin with a KVM backend, all you virtual machines can be also managed with virsh(1) or Virtual Machine Manager.
You should check-out the omv.yaml file, it’s very easy to hack and offers plenty of very interesting features to automate your dev environment spawning. You’ll find more documentation on github.