Packer comes with a QEMU Builder. Its not well documented, but thanks to J.Toppins, I have a git repo that shows you how to build a Ubuntu and Jessie Libvirt compatible Vagrant Box
This was the old post. Originally created 25th Sept. This method still works. Just much longer.
Download Packer
Packer is a for creating machine images from a single source configuration. It has a QEMU builder, but I found it too complicated
Packer ships in a zip package that contains binary files. Example of how download packer and update the executable path search location.
mkdir $HOME/packer
cd $HOME/packer
wget https://dl.bintray.com/mitchellh/packer/packer_0.8.5_linux_amd64.zip
unzip packer_0.8_5_linux_amd64.zip
export PATH=$HOME/packer:$PATH
Disable Libvirt and KVM (optional)
This step may not be required. Check if the KVM module and libvirt is running.
lsmod | grep kvm
ps -ef | grep libvirt-bin
If enabled, then disable these services
sudo service libvirt-bin stop
sudo rmmod kvm_intel kvm
Download and enable virtualbox
sudo apt-get install virtualbox
service virtualbox start
Download Chef Bento
Chef/Bento contains packer config files for the most popular linux distributions.
In this example I will use the ubuntu trusty configuration file.
cd $HOME/packer
git clone https://github.com/chef/bento
packer build bento/https://github.com/chef/bento/blob/master/ubuntu-14.04-amd64.json
The chef/bento package does provide virtualbox base boxes, but I like building from
scratch because it runs apt-get upgrade during the build process so I get the
latest updates. This is very helpful when building new large environments with
lots of ubuntu VMs. The time it takes to run apt-get upgrade
on the new virtual
environment is greatly shortened because the box image has the latest updates.
Note: This process requires a PC with a GUI. Part of the process spins up a Virtualbox console and executes config in it. It does not appear to be headless and I am not sure how to run packer in Virtualbox headless mode
If you do not have a GUI, then I would suggest just download the base box you want and proceed to the next step
Packer gives its generated boxes weird names. Not sure how to remedy this and
give it some sane names. So in my case, it created a box called
__unset_box_basename__.virtualbox.box
Vagrant mutate from Virtualbox provider to libvirt KVM provider
Install Vagrant if you have not done so already
Install the vagrant mutate plugin and apply it to the base box created
vagrant plugin install vagrant-mutate
vagrant mutate __unset_box_basename__.virtualbox.box libvirt
After this is completed, I would suggest rename the box created
$ cd $HOME/.vagrant.d/boxes
$ mv __unset_box_basename__.virtualbox trusty64
$ vagrant box list | grep trusty
trusty64 (libvirt, 0)
Disable Virtualbox and Install/Enable Libvirt
These steps disable Virtualbox , install libvirt, if it is not installed and enable KVM.
sudo service virtualbox stop
sudo apt-get purge virtualbox
sudo apt-get install libvirt-bin qemu-kvm
sudo modprobe kvm_intel
sudo service libvirt-bin start
Boxes Available from LinuxSimba
For my convenience I save my favorite base boxes from libvirt on linuxsimba.com. I will update this list from time to time, and may eventually get it listed on vagrantboxes.es
Right click the above link and run
vagrant box add [paste_saved_link] -n [name_you_want_to_give_box]
Ubuntu trusty download example
vagrant box add http://linuxsimba.com/vagrantbox/ubuntu-trusty.box -n trusty64