How to run Vagrant + VirtualBox on WSL 2 (2021)

May 10, 2021

HashiCorp Vagrant provides the same, easy workflow regardless of your role as a developer, operator, or designer. It leverages a declarative configuration file that describes all your software requirements, packages, operating system configuration, users, and more.

This tutorial will guide you to install Vagrant on Windows using WSL 2 (Windows Subsystem for Linux) with VirtualBox provider.

The most important thing to mention:

  • VirtualBox must be installed on Windows. Windows will handle the VirtualBox process which will create the VM through the Virtualization Type 2. Learn more about virtualization at https://www.ibm.com/cloud/learn/hypervisors.
  • Vagrant must be installed on Linux (WSL 2). The Linux binary is required because the Windows version is not compatible with WSL 2.
Vagrant + VirtualBox communication diagram.

Requirements

  • Windows 10 - version +19042.928
  • VirtualBox - version +6.1.22 (Windows version)
  • WSL 2
  • (maybe) PowerShell Preview

Install VirtualBox

Just go to the download page and download the VirtualBox executable for Windows, then run it:

You must install the VirtualBox for Windows hosts

Install WSL 2

You must use WSL2. To install it, check the official documentation. I'll not set the guide here because it changes all the time:

Instalar o WSL no Windows 10
Saiba como instalar as distribuições do Linux no seu computador Windows 10 com um terminal Bash, incluindo Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin e Alpine.

Now open PowerShell and check if it's working properly and you are using version 2:

Check if you're using version 2 for your Ubuntu distribution

Install PowerShell Preview

Depending on your Windows version, you may need to install the PowerShell Preview version. If that's the case, go to your current PowerShell version and run the following command:

Invoke-Expression "& { $(Invoke-Restmethod https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"
Installing PowerShell Preview

This should open an installation wizard. Go through all the steps and finish the installation process. If it fails, you can try to install it from the Windows Store:

Baixar PowerShell Preview - Microsoft Store pt-BR
Baixe este aplicativo da Microsoft Store para Windows 10, Windows 10 Mobile, Windows 10 Team (Surface Hub). Veja as capturas de tela, leia as opiniões mais recentes dos clientes e compare as classificações para PowerShell Preview.

Install Vagrant

You must install Vagrant inside WSL. So you must download the Linux version.

Considering you're using Ubuntu 20.04, run:

# run inside WSL 2
# check https://www.vagrantup.com/downloads for more info
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install vagrant
Terminal on WSL 2

Them you must enable WSL 2 support. To do that, append two lines into the ~/.bashrc file:

# append those two lines into ~/.bashrc
echo 'export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"' >> ~/.bashrc
echo 'export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"' >> ~/.bashrc

# now reload the ~/.bashrc file
source ~/.bashrc
Terminal on WSL 2

Hello world with Vagrant for WSL2

Now that you have everything installed and configured, let's create a simple hello world project.

You'll need to go to Windows files using the WSL, then run every Vagrant command from there:

# Go to Windows user's dir from WSL
cd /mnt/c/Users/<my-user-name>/

# Create a project dir
mkdir -p projects/vagrant-demo
cd projects/vagrant-demo

# Create a Vagrantfile using Vagrant CLI
vagrant init hashicorp/bionic64
ls -l Vagrantfile

# Start a VM using Vagrantfile
vagrant up

# Login to the VM
# (password is 'vagrant')
vagrant ssh

# Done :)
Terminal on WSL 2

References

Luiz Felipe F M Costa

I am a quality engineer at Red Hat / Ansible. I love automation tools, networking, games, and coffee. I am also an active contributor to open-source projects on GitHub.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.