One of the most tedious tasks when developing software on Unix is to check your software would run on all the different Linux variants. But I have just discovered a tool can could improve this with a little help of VirtualBox. It is called Vagrant, and it creates some kind of development environments by cloning preconfigured virtual machines (in fact, you just download tar files) and giving you a development machine where you can do all your stuff:
The main problem is the overhead VirtualBox adds to the equation: it will never be really fast, and this means you can not run multiple virtual machines on your desktop or your Jenkins server, all building your software at the same time. That is the reason why there is another project, toft, that tries to overcome this problem by using LXC (a containers technology) instead of full virtual machines. From the home page:
Toft provides deb and rpm packages to simplify the usage of lxc; it also provides pre-created linux images(lucid, natty and centos-6) and scripts to create these images so user can play with lxc containers by simply installing a package and download an images file.
Toft also provides a ruby gem, wrapping common tasks such as managing nodes, running chef recipes, running ssh commands and verifying system status in ruby API; therefore you can use it with test framework such as rspec, cucumber to write tests against chef receipes, packages, scripts.
I have not tried toft yet, and I don’t know if it would be production ready, but it is a promising project…