We are always looking for ways to improve the productivity when it comes to developing, deploying and testing Licode. As a project with several library dependencies, 2-3 programming languages, etc. setting up a new machine for development can be daunting at times, even with our super-easy installation scripts.
Furthermore, testing in different network configurations (behind NAT, firewall, with remote erizos…) can be quite time consuming. We have found the solution to these problems with Vagrant
Vagrant is a very powerful tool to easily create, configure and port work environments. It uses virtualization and advanced provisioning tools such as Chef to automatically set up and provision virtual machines.
Not only that, but Vagrant also makes it easy for us to deploy several machines at the same time with only one configuration file. Furthermore, it supports several VM provides such as VMWare, VirtualBox and even cloud providers (AWS, Openstack) via plug-ins.
We have included our own Vagrantfile configuration and provision shell script in the repository. The provision script will download the repository inside the new virtual machine, install the dependencies and compile everything.
The prerequisites are: Vagrant (of course :)) and VirtualBox.
So what you have at the end is :
Using vagrant ssh you can start and stop Licode as usual. So there you have your full Licode development environment.
Besides, by changing things in the Vagrantfile you can set up several machines, network configurations, etc. to help you with your testing. Take a look at the tutorials in http://www.vagrantup.com for more information.
We will be playing with this the next weeks, trying AWS, OpenStack, etc. Any experiences, comments suggestions are welcome :)
See you all developers in the list!