Vagrant
By HashiCorp
Vagrant is a HashiCorp tool for building and managing portable, reproducible virtual development environments, defined through a simple configuration file and provisioned automatically on a virtualization provider like VirtualBox.
Definition
Vagrant is a HashiCorp tool for building and managing portable, reproducible virtual development environments, defined through a simple configuration file and provisioned automatically on a virtualization provider like VirtualBox.
Overview
Before containers became the default way to standardize development environments, Vagrant addressed the same core problem — 'it works on my machine' inconsistencies — by letting teams define a virtual machine's configuration in a `Vagrantfile`: which base OS image to use, how much CPU/memory to allocate, network settings, and which provisioning scripts or tools (such as Ansible) should configure the machine after it boots. Running `vagrant up` then creates and boots that virtual machine on a provider like VirtualBox, VMware, or a cloud provider, applies the specified provisioning, and gives the developer a shell into an environment that matches what every other team member (and often production) is running. Because the Vagrantfile is checked into version control, environment setup becomes reproducible and shareable rather than a set of manual, undocumented steps. Vagrant's popularity has declined somewhat as lighter-weight Docker containers became the default for reproducible environments in many workflows, since containers start faster and use fewer resources than full virtual machines. Vagrant remains relevant, however, for cases that need a full guest operating system rather than a shared kernel — testing kernel-level behavior, simulating multiple full servers locally, or working with software that doesn't containerize well — and is often used alongside Terraform and Packer in the broader HashiCorp toolchain.
Key Features
- Declarative Vagrantfile describing a virtual machine's OS, resources, and networking
- Automated provisioning via shell scripts, Ansible, Chef, or Puppet
- Support for multiple virtualization providers (VirtualBox, VMware, and others)
- Reproducible development environments shared via version control
- Simple CLI workflow (vagrant up, vagrant ssh, vagrant destroy)
- Shared folders for syncing project files between host and guest machine
- Box ecosystem of prebuilt base images for common operating systems