Technology moves fast! ⚑ Don't get left behind.🚢 Subscribe to our mailing list to keep up with latest and greatest in open source projects! πŸ†

Subscribe to our mailing list


Vagrant is a tool for building and distributing development environments.

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use vagrant

Statistics on vagrant

Number of watchers on Github 16330
Number of open issues 460
Average time to close an issue 4 days
Main language Ruby
Average time to merge a PR 4 days
Open pull requests 230+
Closed pull requests 72+
Last commit about 1 year ago
Repo Created over 9 years ago
Repo Last Updated about 1 year ago
Size 19.6 MB
Homepage https://www.vagra...
Organization / Authorhashicorp
Page Updated
Do you use vagrant? Leave a review!
View open issues (460)
View vagrant activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating vagrant for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)
What people are saying about vagrant Leave a review
I can do my web development locally


Vagrant is a tool for building and distributing development environments.

Development environments managed by Vagrant can run on local virtualized platforms such as VirtualBox or VMware, in the cloud via AWS or OpenStack, or in containers such as with Docker or raw LXC.

Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux.

Quick Start

For the quick-start, we'll bring up a development machine on VirtualBox because it is free and works on all major platforms. Vagrant can, however, work with almost any system such as OpenStack, VMware, Docker, etc.

First, make sure your development machine has VirtualBox installed. After this, download and install the appropriate Vagrant package for your OS.

To build your first virtual environment:

vagrant init hashicorp/precise32
vagrant up

Note: The above vagrant up command will also trigger Vagrant to download the precise32 box via the specified URL. Vagrant only does this if it detects that the box doesn't already exist on your system.

Getting Started Guide

To learn how to build a fully functional development environment, follow the getting started guide.

Installing the Gem from Git

If you want the bleeding edge version of Vagrant, we try to keep master pretty stable and you're welcome to give it a shot. Please review the installation page here.

Contributing to Vagrant

To install Vagrant from source, please follow the guide in the Wiki.

You can run the test suite with:

bundle exec rake

This will run the unit test suite, which should come back all green! Then you're good to go!

If you want to run Vagrant without having to install the gem, you may use bundle exec, like so:

bundle exec vagrant help

Acceptance Tests

Vagrant also comes with an acceptance test suite that does black-box tests of various Vagrant components. Note that these tests are extremely slow because actual VMs are spun up and down. The full test suite can take hours. Instead, try to run focused component tests.

To run the acceptance test suite, first copy vagrant-spec.config.example.rb to vagrant-spec.config.rb and modify it to valid values. The places you should fill in are clearly marked.

Next, see the components that can be tested:

$ rake acceptance:components

Then, run one of those components:

$ rake acceptance:run COMPONENTS="cli"
vagrant open issues Ask a question     (View All Issues)
  • over 2 years Vagrant provisioning rsync fails
  • over 2 years Curl broken in macOS vagrant 1.8.7
  • over 2 years Keyservers for Docker constantly failing
  • over 2 years vagrant not set private_network or lost private_network after set
  • over 2 years vagrant up failing for fedora 24
  • over 2 years Consider adding macOS and Windows to your CI testing
  • over 2 years vagrant uses incorrect name of network interface for bridged interface
  • over 2 years Can not close VBox console window and let the VM run in headless node anymore
  • over 2 years Hyper-V provider inaccurately reporting WinRM address as randomly
  • over 2 years Vagrant crashes after one or few successful Chef provisions Vagrant could not detect Chef on the guest
  • over 2 years Vagrant does not look to manage state of the host machine well
  • over 2 years Setting hostname on debian8 with systemd / without dbus
  • over 2 years Quite frequently git does not work
  • over 2 years Vagrant can't use the requested machine because it is locked!
  • over 2 years An error occurred in the underlying SSH library that Vagrant uses.
  • over 2 years Vagrant 1.8.6 with `private_network` duplicates eth0 instead of adding eth1 for WPLib Box
  • over 2 years Guest-specific operations were attempted on a machine that is not ready for guest communication...
  • over 2 years eth0 is hard coded as an interface name in network_dhcp.erb
  • over 2 years Using a tilde in Vagrantfile is not expanded on Windows
  • over 2 years Vagrant fails to detect Ethernet status on Apple devices
  • over 2 years Try to auto login as root, but authentication failure.
  • over 2 years Early Vagrant initialisation sorts box versions incorrectly.
  • over 2 years Using file provioner with windows host fails on big files
  • over 2 years Document how we can easily write tests for custom plugins
  • over 2 years Allow plugins to define their own entry_point
  • over 2 years Port collision detection broken under VMware Fusion 8.5.1
  • over 2 years OSX Sierra + Trusty64 experiencing connection reset by peer errors
  • over 2 years Ubuntu 16.04 LTS box built with VMware 8.5 stuck at 'Waiting for machine to boot'
  • over 2 years VMware Fusion + IPv6 = uninitialized constant Vagrant::Errors::VMNetNoIPV6 (NameError)
  • over 2 years salt provisioner: error "invalid_methods masterless?"
vagrant open pull requests (View All Pulls)
  • Do not ignore the sentinal file when running resume
  • Adds snapshot commands in VirtualBox 4.1
  • Fix berks
  • Fix for #4608
  • communicators/winrm return false on ready? failure
  • set longer timeout for net::ssh
  • translate windows path
  • puppet_apply doc: small typo fix
  • Salt provisioner: respect run_highstate setting in masterless mode
  • fixes-#6834-commands using machine id fail
  • redhat/nfs_client: Ignore systemctl nfs return code
  • Add missing features to snapshot restore/pop
  • Added a command vagrant box remove-old-versions to remove all but the newest version of all boxes
  • [WIP] Stop the Docker host VM on vagrant halt
  • Bump net-scp dependency version
  • Add shell quotes to the reported rsync command line to make it readable.
  • Allow overriding the inferred name from `config.vm.synced_folder`
  • Add quoting for ansible's `extra_vars`
  • Fix for #6761 (fixes incomplete #6598)
  • Add networking cap for Ubuntu guest
  • fixes #2270, support env variables in puppet apply run
  • Docker provisioning: restart container if newer image build is available.
  • Add docker-exec
  • Guard against modifying 'localhost' in /etc/hosts
  • kruthar/disable provisioners
  • Add custimizations for hyper-V
  • FIX: StatusException "no such file" in push via SFTP when file parent directory does not exist
  • fix typo when removing tmp files
  • Save rdp credentials to support autologon
  • Added a regexp check for output returned when using biosdevname,
  • Pass through retcode of masterless Salt provisioner
  • Document configuration for ansible ad-hoc commands
  • Fixed linked clone failure when master VM is missing
  • Add snapshot support to Hyper-V provider
  • HyperV: Reinstate compatibility with PowerShell 4
  • ansible_local: use double quoting for 'extra-vars', 'limit' and 'start-at-task' options
  • hyperv differencing disk
  • Handle new 'predictable' network interface naming style
  • Puppet structured facts toyaml on provisioner
  • update cmd format
  • Salt: move masterless config to apply to all platforms
  • Fixes 7073 specification.rb undefined method group by for nilclass
  • Fix Subprocess problem with closure of stdin by caller
  • Ansible parallel race
  • Remove sysvinit else clauses in NFS for Arch Linux
  • Add section to NFS sync folder docs for non-standard system utility locations
  • Adding example of using the preserve_order flag
  • Change: disable the linux switch (Docker for Mac/Windows, etc.)
  • Set max_network_adapters to 36 for Virtualbox
  • Expanding SMB sharing to be compatible with more than just Windows hosts (#6904)
  • prepare_nfs_settings: Try harder to get all machine IPs.
  • [#7202] Always forward SSH on Windows
  • Attempt to do the right thing if new hostname is in /etc/hosts
  • Adding Fedora IPv6 Static Address Support
  • Do not let NFS systemctl status use a pager
  • compatibility fix for ubuntu/debian dash shell
  • Adds Guest detection and features for Amazon Linux
  • Modify configure_networks to support udev's predicatable network interface names on Ubuntu/Debian
  • fixes #2270, support env variables in puppet apply run
  • Fix issues with virtual interfaces
  • Add support for mounting synched folders on windows guest via ssh
  • bugfix to bugfix for ssh-agent interaction
  • VirtualBox provider: Extension to allow disk resizing on VM import
  • Improving resilience of some VirtualBox commands.
  • Much faster rsync auto
  • Fix puppet4 autodetect
  • Install Vagrant plugins in isolation
  • support SMB synced folders on non-Windows hosts
  • NFS: Use exportfs instead of /etc/exports on Linux
  • A more reliable way to detect Ubuntu
  • Support installing synced folder clients in Arch
  • Strip leading slash left in front of drive letter by uri.path
  • Use RFC- and cURL-friendly file:/// URI. Fixes #7568.
  • plugin: Write out state file via create-new-then-rename
  • More robust Ansible detection for local Ansible provisioner
  • exclude control options from ssh command for windows platform + correct rsync exclude parameter
  • darwin rdp: File was missing newlines
  • Fix for #5070
  • Support Vagrantfile-relative VAGRANT_DOTFILE_PATHs
  • redux of pr 7398 for ssh-agent key fix
  • winrm communicator: the task is only really finished when $out_file is closed
  • Ignore files excluded from sync on chown
  • Machine data directory for base box package
  • Updated comments to match example
  • Do not use UNC path for Solaris guest on Windows
  • commands/up: don't instantiate machines while installing providers
  • Only use effective group when appropriate
  • Corrected typo, added a couple examples.
  • fix #7489 preventing winrm connection leakage
  • provider/virtualbox: Refactor host-only network settings
  • util/network_ip: Simplify #network_address helper
  • Remove --interactive flag from Docker command
  • Use comma to set off nonrestrictive clause.
  • Remove executable permissions.
  • Add note about using a separate file for sudoers
  • Fix Vagrant not prioritizing configured providers correctly
  • support ansible for remote servers and vm
  • Fix CentOS7 network config - do not prompt before overwriting
  • added missing part of logic - removed in b91c167
  • Enable support for nested Hyper-V
  • Fix a typo in
  • communicators/winrm: Update winrm and winrm-fs dependency constraints
  • Package Hyper-V boxes
  • Fix minion_id config for salt provisioner
  • use '-o IdentityFile=' instead of '-i'
  • Add support for vmcx (Hyper-V binary config format) to the Hyper-V import script
  • Do better at finding ssh_info for Docker
  • add the `salt_call_args` option
  • Bump nokogiri dependency to the latest stable version
  • Make Debian guest detection more reliable
  • Add Virtuozzo Linux 7 to list of RHEL flavors
  • Add support for the Haiku operating system
  • Improve user permission detection on Windows
  • [core] Remove bundler usage for plugin management
  • synced_folders/rsync: Quote exclude paths
  • Add config_file option to both Ansible provisioners
  • providers/docker: Docker provider build from repo
  • Update
  • Update snapshot save documentation
  • Issue #7885 Don't raise error if response is 416
  • Add md5 and sha1 checksum support to Downloader.
  • Allow hostnamectl set-hostname to fail silently
  • Remove requirements on path without space as issue was fixed in Ruby
  • Fix box sorting in box_collection
  • provision only scope=link interfaces. Ignore loopback & co.
  • The Hyper-V provider works fine in Windows 10
  • Fix `service network restart` on RHEL-7 / Fedora
  • redirect any output to stderr by /sbin/init to /dev/null when checking for upstart capability
  • Add documentation for ssl_peer_verification
  • Multi vhd support for XML
  • Add parallel for destroy
  • Prevent generating environment variables with invalid empty names
  • Allow VAGRANT_DOTFILE_PATH to be expanded as expected.
  • Add note on output behavior when pty enabled.
  • Scrub credentials from box URLs
  • adding Cumulus as guest plugin
  • Display default on expunge command questions.
  • Set base directory to parent directory within plugin specs
  • [WIP] Warn about changes to CWD on every machine action
  • add a config option to ignore the box vagrantfile
  • website: make linked clones work w/ 1.8.0 & newer
  • Fix linked clone backwards compatibility example
  • Allow optional pip args via optional `pip_args`
  • update license to 2017
  • guests/arch: fix configuring multiple network interfaces fails
  • checks if provisioner run option is set to never
  • Allow alternate ansible debian wheezy repository
  • Allow ansible host and port to be overridden
  • omits empty ENV key when updating
  • Use uid/gid from mount_options if provided for synced folders.
  • Add note about vagrant-salt plugin
  • Fix virtualbox shared folders path
  • Add link to Atlas signup form
  • enhance untar_failure message
  • HyperV inaccurate winrm address - issue-7983
  • Fix typo
  • Fix dockerfile parameter handling
  • Add support for Kali Linux
  • add metadata.json on vmware box
  • 8468 - make more virtualbox commands retryable
  • Reserves IP address 3-50 for static IP private network.
  • Update is_port_open.rb
  • Update version etcd in configure_networks.rb
  • fix `config.ssh.keys_only = false` for ansible
  • Improving resilience of some VirtualBox commands.
  • Update NFS control commands for SUSE
  • Update rspec to recent version and fix deprecations
  • Use exportfs for NFS management on linux hosts
  • Added ability to set env variable VAGRANT_USER_AGENT in order to over…
  • [Readme] Added link to the changelog much like Terraform and Nomad.
  • Fix #8328: Salt pillar configuration on Windows guests
  • Fix #8315: Avoid "unexpected token" errors in PowerShell by separating environment variables with semicolons
  • Add proper path translation for WSL (Windows Subsystem for Linux) installations
  • Fix Ruby 2.4+ compatibility.
  • Ensure interface is up during configure_networks
  • Correctly apply mode and labels to RHEL network-scripts
  • Use a generic login mechanism for the SMB shares.
  • website: Update Vagrant Cloud migration docs
  • guests/smartos: Add/fix various guest capabilities
  • Fix #8598 : example in docs for box usage.
  • Update
  • Fix a problem when using rsync folders on windows clients
  • Allow which to use original path. Prefer native ssh.
  • More explicit Solaris 11 and inherit SmartOS from Solaris
  • improvements
  • Allow docker provisioner to run on windows
  • Change to a temporary directory before downloading script files
  • Notify when host changes on redirect
  • Fixed hostonly matching not respecting :name argument
  • #9298: Compute a correct path to the current WSL instance
  • Atomically apply new hostname.if(5)
  • Disable if/netplugd when setting up a static ip on a gentoo guest using openrc.
  • [WIP] Favor system ssh binary over embedded ssh binary
  • Suggest being able to be a machine name from the file name too.
  • Restarting network (via systemctl): [FAILED]
  • Clarify Hyper-V documentation.
  • Add completion for snapshot names for vagrant snapshot restore|delete
  • Hyper V Provider, handle multiple attached VHDs for XML configs
  • Mark the become features to be version 2.0
  • Add IPv6 network template for OpenBSD machines
  • Hyper v networks
  • Added changes to allow elevated PowerShell commands from cli
  • nfs_udp is false by default if using NFS v4
  • Improve salt provisioner docs on how to pin salt version
  • Fix #8730. Use 'ip route' in lieu of 'route' in debian dhcp template
  • smb synced folders: auto-elevate
  • Update systemd? check for guest inspection
  • Exit if Hyper-V is enabled and VirtualBox provider is used
  • Configure FOSSA provided builds
  • Hyper v multiple nic
  • salt: use -s with curl
  • salt: remove leading space with bootstrap_options
  • Fix typo in macOS sudoers line
  • Use instead of localhost
  • Add master_json_config & minion_json_config options to salt provisioner
  • Debian: Point hostname to in /etc/hosts
  • Fix Hyper-v and VirtualBox check
  • Suppress errors from invalid path encoding and carry on with best effort
  • WIP Vagrant aliases
  • Fix ssh binary selection on windows
  • Bump i18n 1.0.0.
  • Improve Windows drive letter removal hack
  • Updating check for Hyper-V
  • ensure vagrant halt terminates with a clean and correct exit code for haiku guests
  • [WIP] Switch web analytics to segment
  • Further attempt to get the IP address of HyperV guests
  • Fixes #9085: Cannot `up` a machine with Docker Toolbox and Git Bash
  • less specific string grep to fix PhotonOS 2.0 detection
  • Fixed #9520: Invalid user access rights for generated ssh private_key
vagrant questions on Stackoverflow (View All Questions)
  • Vagrant VBoxGuessAdditions error
  • Why am I getting "Cannot redeclare class" on Symfony2 + vagrant + moved vendors optimalization setup?
  • Vagrant dynamic RAM allocation in CentOS
  • ping vagrant VM from another machine
  • Connecting Cordova App to Database on Vagrant Server
  • Xdebug in Vagrant laravel/homestead V0.4.0 / v3.0.1
  • How to deploy app in cloudfoundry running on vagrant using bosh-lite?
  • Why is connection refused by Vagrant box in Windows 10?
  • Access to vagrant box installed on dedicated server from web
  • vagrant laravel/box does not connect / unpack
  • How can I connect project made on PHPStorm and Bitbucket with Vagrant?
  • Download vagrant box file locally from atlas and configuring it
  • How to "decompose" instructions from a vagrant-chef-vmbox repo and install all on the real machine, not a virtual one?
  • can't get access from guest centos to host windows folder. Vagrant virtual machine
  • Proper group ownership & permissions to the Laravel app/storage folder on vagrant?
  • Docker build causes vagrant image to lose connection
  • Hot to connect project made on PHPStorm and Bitbucket to Vagrant?
  • No laravel sync folders in homestead vagrant on windows
  • How to enable hot reloading via shared folders with Vagrant VM?
  • Vagrant up fails, can't locate box in catalog
  • connection kde after install with packer vagrant
  • Vagrant is attempting to interface with the UI in a way that requires a TTY
  • Vagrant Not Starting Up. User that created VM doesn't match current user
  • Vagrant hangs on NFS mounting on Ubuntu 14.04
  • Vagrant with VMware-Fusion gets connection timeout at `vagrant up` but not `vagrant ssh`
  • Vagrant up hangs at "ssh auth method: private key"
  • Why does Chocolatey fail to install when provisioning a Windows 7 VM using Vagrant?
  • SSH into Vagrant box as another user using key?
  • Is it possible to restart a machine when provisioning a machine using Vagrant and pickup where the script left off?
  • does "vagrant destroy" erase apache configs?
vagrant list of languages used
Other projects in Ruby