On the Nefarious Designs blog there's a (very complete) guide to Vagrant and using it to set up easily reproducible versions of your development environment.
In case you’ve been living under a rock for the past couple of years, Vagrant is the latest development in easily controlled virtualised environments. [...] Vagrant automates creation and provisioning of virtual machines within VirtualBox via the command line, whilst also allowing for easy distribution and reuse across multiple projects. In this article, I’m going to look at how it can make life considerably easier when dealing with development environments.
Included in the post is just about everything you'll need to get started using this powerful tool:
- A link to Vagrant images
- A guide to the VagrantFile
- the Provisioning process
- Interacting/Controllig the Vagrant VMs
He also includes a basic setup of an environment (with the Vagrant config to create it) and an example of using Puppet to provision the Vagrant VMs.