Vagrant is AwesomeJanuary 12, 2013
I’ve been using Vagrant in my workflow for a few months now, and I love it. Vagrant is a slick way to build and reproduce development environments using virtual machines. Vagrant also works with provisioning tools Chef and Puppet. With Vagrant and Chef, I was able to get a full Python/Django install on a virtual machine up and working in about 10 minutes.
Why not just use vanilla VirtualBox or VMWare?
Vagrant excels at portability. You can package each virtual machine created with Vagrant into a Vagrant box by simply running
vagrant package --vagrantfile Vagrantfile.pkg
inside your Vagrant directory. This allows you to share your development environment with colleagues, servers, machines, or anywhere else replication is useful. Vagrant also provides seamless SSH, port forwarding, and file sharing functionality between your local and virtual machines.
Vagrant uses a base box for establishing an OS skeleton. Any packages on top of this are provisioned using Chef or Puppet. A list of community-maintained base boxes can be downloaded at http://www.vagrantbox.es/.
Vagrant is a great solution for developing in a team, and keeps your local environment from being muddied by conflicting language specific installs. I tend to create vagrant boxes based on the type of language/framework I’m using. One for Rails, one for Django, one for CodeIgniter, etc..
Get started at http://docs.vagrantup.com/v1/docs/getting-started/index.html, and if you already use Vagrant, leave some of your own use cases in the comments.