Hi, i’m Kostas. I am a developer. I develop stuff for the web. I am using Linux, for my main development machine since i can remember. (I am 25 now so about 10 years or so).

But one day i was tired. I was bored of all this mess, that was just not my job. I didn’t care about package conflicts, or kernel recompilation. So i format and this time i went on Windows. I thought let’s make my developing life a little more easier. But that’s just didn’t work. Instead, about 5 months later, i am feeling anti-productive. Yes that’s right. Nothing is working the way i need to work.

So i present to you Vagrant.

Vagrant is a nice middleware between you and VirtualBox. It provides all the tools you need to set up your development environment almost everywhere and almost immediately.

Consider this. You are working on an online service that is deployed on a hosting machine somewhere. You can’t develop your newly features on the production server and also you don’t want an FTP connection to work. You need everything local. You want also to have an exact same machine, as your remote machine, to work with. With the same exact libraries and the corresponding versions of these. After you have download Vagrant:

$  vagrant init precise32 <a href="http://files.vagrantup.com/precise32.bo">http://files.vagrantup.com/precise32.bo</a>
$ vagrant up
 $ vagrant ssh

Just setup your Linux box with all the services, libraries and stuff you need. Edit the .VagrantFile, by first checking the docs. You can make all the cool stuff like port forwarding and shared folders on your hosting machine.

Now you need to share this box with your colleagues so you can work on the same exact machine.Vagrant let’s you create packages. Those packages are just some configuration files you can even upload to Github and let others grab them.

But the greatest feature, Vagrant has to offer you is Server Provisioning. UsePuppet or Chef to define all the services and packages you want automatically to install on the box, so everyone got’s the same exact machine as your production server or even the staging/testing server.

There it is, never worry about your main desktop OS. Create a development environment once and for all.