Vagrant is an open-source software used to build and maintain a portable virtual environment for software development, such as VirtualBox, Hyper-V, Docker containers, Vmware or AWS which try to simplify the software configuration management and virtualisation. It is thus attempting to achieve higher development productivity. Vagrant is written in Ruby, but its ecosystem supports development in different languages, such as PHP, Python, C#, Java or Javascript.
Vagrant uses “Provisioners” and “Providers”, as basic principles to manage development environments. Provisioners are tools that allow users to customise the virtual environment configuration. Puppet and Chef are the most used tools in Vagrant (also Ansible is available from 2014).
Providers are services Vagrant uses to set and create a virtual environment. VirtualBox, Hyper-V and Dcker virtualisations are supported directly within Vagrant, Vmware and AWS are then supported using plugins.
Vagrant sits above the virtualisation software as a wrapper helping developers with interactions with providers. It automates the configuration of virtual environment using Chef or Puppet, so the user doesn’t need to use any other virtualisation software directly.
Hardware and software requirements are stored in a file called “Vagrantfile”. It assists with launching necessary steps to produce a “box” ready for development. “Box” is a format and suffix for the Vagrant environment that is copied to another machine to replicate the same environment.
Local development is appropriate if you develop for yourself and there is no big team involved in development. But if you are working on a bigger project where more teams work and each team needs a different configuration, Vagrant can be a suitable solution. With its help, you can keep all project files and folders in the local environment, but also have them on a server, so it is easy to make the local environment accessible to a project manager or designer.