Vagrant - Build and Deploy Virtualized Development Environments Using Ruby

One of the cool things we are seeing is more tools and tool chains for performing very high level operations quite simply. Vagrant is such a tool for building and distributing virtualized development environments.

Web developers use virtual environments every day with their web   applications. From EC2 and Rackspace Cloud to specialized solutions such   as EngineYard and Heroku, virtualization is the tool of choice for  easy  deployment and infrastructure management. Vagrant aims to take  those  very same principles and put them to work in the heart of the   application lifecycle. By providing easy to configure, lightweight,   reproducible, and portable virtual machines targeted at development   environments, Vagrant helps maximize your productivity and flexibility.

If you've created a build and deployment system before Vagrant does a lot of the work for you:

  • Automated virtual machine creation using Oracle’s VirtualBox
  • Automated provisioning of virtual environments using chef
  • Forward ports to the host machine
  • Full SSH access to created environments
  • Shared folders allows you to continue using your own editor
  • Package environments into distributable boxes
  • Completely tear down environment when you’re done
  • Easily rebuild a complete environment with a single command

For new projects there's a very high bar for setting up this kind of one button style infrastructure. Many times I've spent many many weeks building similar systems, Vagrant looks like a very interesting option for jumping on the fast track to robust repeatable deploys.