Vagrant is an open-source  command-line tool for building and managing virtual machine  environments. By default Vagrant can provision machines on top of  VirtualBox, Hyper-V, and Docker. Other providers such as Libvirt (KVM),  VMware and AWS can be installed via the Vagrant plugin system.

Vagrant is mostly used by developers to set up a development environment that matches the production environment.

This  tutorial explains how to install Vagrant on a Debian 9 machine. We’ll  be using the VirtualBox provider, which is the default provider for  Vagrant.


Make sure that you have met the following prerequisites before continuing with this tutorial:

Install Vagrant on Debian

The  Vagrant package, which is available in Debian’s repositories, is pretty  outdated. We’ll download and install the latest version of Vagrant from  the official Vagrant site.

At  the time of writing this article, the latest stable version of Vagrant  is version 2.2.6. Before continuing with the next steps, check the Vagrant Download page to see if a newer version is available.

Start by updating the package list with:

sudo apt update

Download the Vagrant package with the following curl command:

curl -O

Once the .deb file is downloaded, install it by typing:

sudo apt install ./vagrant_2.2.6_x86_64.deb

To verify that the installation was successful run the following command which prints the Vagrant version:

vagrant --version

The output should look something like this:

Vagrant 2.2.6

Getting Started with Vagrant

Now that Vagrant is installed on your Debian machine, let’s see how to create a development environment.

The first step is to create a directory which will be the project root directory and hold the Vagrantfile file.  Vagrantfile is a Ruby file that describes how to configure and  provision the virtual machine.

Create the project directory and switch to it with:

mkdir ~/my-first-vagrant-project

The next step is to initialize a new Vagrantfile using the vagrant init command and specify the box we wish to use.

Boxes  are the package format for the Vagrant environments and are  provider-specific. You can find a list of publicly available Vagrant  Boxes on the Vagrant box catalog page.

In this example, we will use the centos/7 box. Run the following command to initialize a new Vagrantfile:

vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`` for more information on using Vagrant.

You can open the Vagrantfile, read the comments, and make adjustments according to your needs.

Run the vagrant up command to create and configure the virtual machine according to the Vagrantfile:

vagrant up
==> default: Configuring and enabling network interfaces...
    default: SSH address:
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Rsyncing folder: /home/black/Vagrant/my-first-vagrant-project/ => /vagrant

Vagrant mounts the project directory at /vagrant in the virtual machine which allows you to work on your project’s files on your host machine.

To ssh into the virtual machine, run:

vagrant ssh

You can stop the virtual machine with the following command:

vagrant halt

The command bellow stops the running machine and destroys all resources that were created during the creation of the machine:

vagrant destroy


You  have learned how to install and use Vagrant on your Debian 9 machine.  We have also shown you how to create a basic development environment.

To find more information about Vagrant, visit the official Vagrant documentation page.

If you have any questions, please leave a comment below.