Vagrant — это такой теоретический способ упростить жизнь разработчикам в сложном окружении. Бывает, что у приложения есть большое количество разнообразной обвязки, требуемых зависимостей, или, что еще сложнее, оно запускается только в конкретной операционной системе или с определенными версиями библиотек. Вот в этом случае Vagrant может сильно упростить и автоматизировать процесс развертывания окружения разработки.
Как это работает? Есть Vagrantfile, в котором написано, какой базовый образ виртуальной машины взять, и каким образом его налить, то есть, поставить и настроить нужный софт.
Базовый образ — это образ диска виртуальной машины от одной из популярных платформ виртуализации. Поддерживаются и VirtualBox, и Parallels и VMWare. Важный момент заключается в том, что под каждую платформу виртуализации (провайдер в терминах Vagrant) нужно готовить отдельный образ, а потом его поддерживать. Для сборки образов существует Packer от HashiCorp же, но я им не пользовался, предпочитая использовать минимальный образ, который не нужно часто обновлять.