Vagrant is a tool for building and distributing development environments.



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

Package dependencies: Vagrant requires bsdtar and curl to be available on your system PATH to run successfully.

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/bionic64
vagrant up

Note: The above vagrant up command will also trigger Vagrant to download the bionic64 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 from Source

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

Contributing to Vagrant

Please take time to read the HashiCorp Community Guidelines and the Vagrant Contributing Guide.

Then you're good to go!

  • Fix local box add with relative path on Windows

    Fix local box add with relative path on Windows

    When scrubbing box urls of access token parameters, only return the processed URL if the access token was removed. If it was not removed, return the original URL string. This prevents issues with local file URLs being parsed and replaced with invalid paths.

    Fixes: #12340 Fixes: #12350 Fixes: #12320

    opened by chrisroberts 0
  • Update Vagrant to support Ruby 3

    Update Vagrant to support Ruby 3

    This is a single issue to help collect existing issues and PRs around Ruby 3 compatibility. My assumption is that this will be very similar to the 2.7 updates (#11814) where we needed to just run through the entire code base and update things to keep everything consistent. As we dig in we can use the issues/PRs here to help track what needs to be updated (and pull in existing PRs where applicable).


    • #12365
    • #12363
    • #12362
    • #12318


    • #12273
    • #12353
    • #12352
    core enhancement 
    opened by chrisroberts 0
  • Flag RSA SHA1 deprecation when loading keys

    Flag RSA SHA1 deprecation when loading keys

    Set flag on RSA keys of deprecated RSA SHA1 support when loading keys based on server version of the transport. This ensures keys are properly flagged. Flag name has been updated to provide context on usage.

    Version matching on the OpenSSH server version has also been updated to handle customized naming in the version string (as seen in the Windows port) and to properly handle when no match is found.

    Fixes #12344 Fixes #12408 Fixes #12381

    opened by chrisroberts 0
  • Use more conservative TLS settings to work on older .NET versions

    Use more conservative TLS settings to work on older .NET versions

    A follow-up fix for

    Tls13 is only available on .NET Framework 4.8, so the settings should be more conservative to work on older Windows versions. Based on testing reports from other collaborators:

    Thanks to @leon-kleyn, @dafyddj and msmith in Salt Slack community.

    opened by max-arnold 0
  • Allow newer net-scp version

    Allow newer net-scp version

    I've tested this in Fedora with net-scp 3.0 and it works fine, incl. the test suite. Are there any corner-cases I should test, specifically?

    Test suite [*]:

    Additional integration testing:

    [*] Run as a part of Fedora build process, note that some tests are still failing after upgrading to Ruby 3.0.

    opened by pvalena 1
  • Update Hyper-V link.

    Update Hyper-V link.

    This brings it in line with the hyper-v overview page:

    opened by gilbertbw 0
  • `vagrant plugin install` returns

    `vagrant plugin install` returns "SSL_connect returned=1 errno=0 state=error: unexpected message"


    I'm running into the following problem. This is happening on two different machines running slightly different versions of Vagrant, OS and Kernel.

    Any help would be greatly appreciated, thanks!

    Vagrant / OS / Kernel Version

    Vagrant 2.2.10 / CentOS Linux 8 / 4.18.0-193.14.2.el8_2.x86_64 / OpenSSL 1.1.1g FIPS 21 Apr 2020 Vagrant 2.2.16 / CentOS Linux 7 / 3.10.0-1160.25.1.el7.x86_64 / OpenSSL 1.0.2k-fips 26 Jan 2017

    Steps to reproduce

    $ vagrant plugin install vagrant-vbguest
    $ vagrant plugin install vagrant-vbguest --plugin-clean-source --plugin-source

    Expected behavior

    Install the plugin.

    Actual behavior

    $ vagrant plugin install vagrant-vbguest
    Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
    Vagrant failed to load a configured plugin source. This can be caused
    by a variety of issues including: transient connectivity issues, proxy
    filtering rejecting access to a configured plugin source, or a configured
    plugin source not responding correctly. Please review the error message
    below to help resolve the issue:
      SSL_connect returned=1 errno=0 state=error: unexpected message (

    Debug output

    $ vagrant plugin install vagrant-vbguest &> log


    Additional Things

    The following work:

    $ wget -v
    $ wget -4
    $ curl
    $ wget --ca-certificate=/opt/vagrant/embedded/cacert.pem

    I even tried to disable IPv6 (as explained in #8795), but it did not resolve the issue:

    $ sudo sysctl -w net.ipv6.conf.all.disable_ipv6
    $ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
    $ ip a | grep inet6

    I even tried to use curl or wget's certificates instead of the one that ships with Vagrant:

    $ export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt
    $ export CURL_CA_BUNDLE=/etc/ssl/certs/ca-bundle.crt
    $ export SSL_CERT_FILE=/etc/pki/tls/certs/ca-bundle.crt
    $ export CURL_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt


    bundler waiting-reply 
    opened by ndejay 2
  • `vagrant up` crashes with `rsa_compat_build_request': undefined method '[]' for nil:NilClass (NoMethodError)`

    `vagrant up` crashes with `rsa_compat_build_request': undefined method '[]' for nil:NilClass (NoMethodError)`

    Vagrant version

    Vagrant 2.2.16

    Host operating system

    CentOS Linux release 8.3.2011

    Guest operating system

    Cisco IOS-XE 16.09.07


    Vagrant.configure("2") do |config|
      config.vm.provider "virtualbox" do |vb|
        vb.gui = true
        vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"]
      config.vm.define "router1" do |router1| = "cisco/csr1000v"
        # Turn off shared folders
        router1.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
        # Do not try to insert new SSH key
        router1.ssh.insert_key = false
        # Give the VM time to boot as Vagrant cannot tell when it is booted
        router1.vm.boot_timeout = 900 :private_network, virtualbox__intnet: "link1", ip: "", auto_config: false, nic_type: "virtio" "forwarded_port", guest: 22, host: 20001
        router1.trigger.after :up do |trigger|
 = "Configuring interfaces"
 = {inline: "./ -P 20001"}

    Debug output

    The Gist contains 3 files:

    1. vagrant_up_router1-debug-1.txt - The first time vagrant up router1 is run
    2. vagrant_up_router1-debug-2.txt - The second time vagrant up router1 is run
    3. vagrant_ssh_router1-debug.txt - Then vagrant ssh router1 is run

    Expected behavior

    Bring up box

    Actual behavior

    The first time I run vagrant up router1, vagrant provisions the VM, and then crashes with the following error:

    /opt/vagrant/embedded/gems/2.2.16/gems/vagrant-2.2.16/lib/vagrant/patches/net-ssh.rb:10:inrsa_compat_build_request': undefined method []' for nil:NilClass (NoMethodError)

    The VM is left running, however, and I can run vagrant up router1 a second time and finishes running the trigger. I also encounter no issues using vagrant ssh router1

    If I use password-based authentication, vagrant does not crash (but I have to log into all devices manually).

    Steps to reproduce

    1. Use above Vagrantfile with Cisco CSR1000v box built using
    2. Run vagrant up router1
    opened by ggiesen 3
  • Vagrant crashes after provisioning when trying to write box metadata to file box_meta

    Vagrant crashes after provisioning when trying to write box metadata to file box_meta

    Vagrant version

    Vagrant 2.2.14, 2.2.16

    Host operating system

    Windows 10

    Guest operating system

    Debian 9, Debian 10


    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    Vagrant.configure("2") do |config| = "generic/debian10"

    Debug output

    Expected behavior

    The box should start normally and I should be able to login via vagrant ssh afterwards

    Actual behavior

    The box shuts down after all provisioning is done. When vagrant tries to write into the file box_meta, it says it doesn't have the rights to write into the file. The error message thrown is the following, for the full stacktrace please refer to the gist link provided above:

    C:/HashiCorp/Vagrant/embedded/gems/2.2.16/gems/vagrant-2.2.16/plugins/commands/up/middleware/store_box_metadata.rb:27:in `initialize': Permission denied @ rb_sysopen - D:/test/.vagrant/machines/default/virtualbox/box_meta (Errno::EACCES)

    Steps to reproduce

    1. create new folder on any of my disks or an external drive
    2. vagrant init generic/debian10
    3. vagrant up

    Steps I unsuccessfully tried so far:

    • uninstalling vagrant and reinstalling it after rebooting
    • uninstalling vagrant, deleting vagrant.d in home folder and reinstalling after rebooting
    • uninstalling vagrant, uninstalling ruby, deleting vagrant.d and everything looking remotely like ruby and then reinstalling vagrant after rebooting
    • checked file permissions, they are the same on my colleagues machine, where vagrant works just fine
    • vagrant may have run once in a shell that had administrative privileges
    • please help, I'm desperate


    • none I could find unfortunately
    host/windows waiting-reply 
    opened by mmohrwinkel 5
Consistent workflows to provision, secure, connect, and run any infrastructure for any application.
Vagrant/Puppet GUI

PuPHPet PuPHPet - A simple GUI to set up virtual machines for PHP development What? PuPHPet is a web application that allows you to easily and quickly

PuPHPet 3.9k Jun 3, 2021
Phansible - generate Vagrant + Ansible dev environments for PHP

Phansible Phansible is a simple generator for Vagrant projects, targeting PHP development environments, using Ansible as Provisioner. It was inspired

phansible 637 May 5, 2021
Protobox is vagrant web GUI

Protobox Protobox is a layer on top of vagrant and a web GUI to setup virtual machines for web development. A single YAML document controls everything

protobox 352 Feb 15, 2021
Up and running with small Docker environments

Vessel Up and running with small Docker dev environments. Documentation Full documentation can be found at Install

Shipping Docker 1k May 27, 2021
A modern Docker LAMP stack and MEAN stack for local development

The Devilbox Usage | Architecture | Community | Features | Intranet | Screenshots | Contributing | Logos | License Support for valid https out of the

cytopia 3.4k Jun 15, 2021
A fork of Laravel Valet to work in Linux.

Introduction Valet Linux is a Laravel development environment for Linux minimalists. No Vagrant, no /etc/hosts file. You can even share your sites pub

Carlos Priego 1.1k Jun 15, 2021
A development tool for all your projects that is fast, easy, powerful and liberating

Lando A Liberating Dev Tool For All Your Projects The local development and DevOps tool trusted by professional developers across the galaxy. Free you

Lando 2.9k Jun 13, 2021
Monitor for any changes in your php application and automatically restart it (suitable for async apps).

PHP-watcher PHP-watcher helps develop long-running PHP applications by automatically restarting them when file changes in the directory are detected.

Sergey Zhuk 317 Jun 7, 2021
Full PHP development environment for Docker.

Full PHP development environment based on Docker. Use Docker First - Learn About It Later! Join Us Awesome People Laradock is an MIT-licensed open sou

laradock 10.6k Jun 13, 2021
Stacker - The environment for local web development, ready for use.

Introduction English 简体中文 Why stacker? Stacker - This is a local environment for web development with everything you need. What is its benefit? You do

Nikolay Stepanov 356 Feb 9, 2021
Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:

Latest Salt Documentation Open an issue (bug report, feature request, etc.) Salt is the world’s fastest, most intelligent and scalable automation engi

SaltStack 11.8k Jun 18, 2021
Server automation framework and application

Puppet Puppet, an automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks (such as adding users, inst

Puppet 6.2k Jun 15, 2021
Symfony5 template w/ Docker config

Symfony5 w/ Docker config A project template in the following configuration: Symfony 5.2 PHP8 PostgreSQL 13.2 Separate Docker containers for Nginx, FP

Andrew Alyamovsky 3 Jun 5, 2021