The biggest challenge that users (and development teams) typically face when working with virtual machines on the desktop is sharing and maintaining versions of virtual environments. Traditionally, this has meant placing virtual machine files (for either VirtualBox or VMware) in a shared network location or even on a USB thumb drive that is shared among the team to copy to a workstation. These methods also mean that each virtual machine has to be configured for each use. The combination of large file sizes and individual configurations makes shared virtual machines difficult to use in traditional file-sharing scenarios.
Vagrant, on the other hand, relies strictly on text files (namely the Vagrantfile) to define virtual environments. Text files are easy to modify, track, and share using traditional source control methods. Vagrantfiles can even be kept in the same repository that hosts source code, giving developers the opportunity to store both application...