In a sense, Vagrant is a tool for working with virtual environments, which in most cases means virtual computers. Vagrant provides a simple and easy-to-use command-line client for managing these environments, as well as an interpreter for Vagrantfiles, which are text-based specifications of what each environment looks like. Vagrant is open source, which means that anybody can freely download, change, and share it.
While many virtual machine hypervisors provide their own command-line interface, and technically virtual machine provisioning can be done directly or through shell scripts, the advantage Vagrant provides by adding an additional layer is simplicity, interoperability across multiple systems, and a more consistent approach that could theoretically be used with any virtual environment running on top of any other system.
Your environment can be described in code by offering a common text-based format for working with virtual machines, making it easy to back up, edit, distribute, and manage with revision control. It also implies that instead of sharing an entire virtual machine image, which may be many terabytes in size, a simple text file weighing only a few kilobytes can be transmitted every time the configuration is changed.
I intend to go into more detail on vagrants in the next article.🌱