Direkt zum Inhalt
MP-Development Code, Bikes and more

Vagrant, Oracle VirtualBox und WSL2

Gespeichert von Michael am
vagrant test

Das Problem bei mir war, dass ich den Docker-Desktop auf Windows nicht ständig laufen lassen konnte, da er WSL2 benötigt und das in der Standard Installation Probleme mit VirtualBox von Oracle bereitet. Mit ein paar einfachen Änderungen lässt sich das aber beheben. Die folgenden Schritte zeigen euch wie.

Voraussetzungen

  • Windows 10 Pro - version +19042.928
  • VirtualBox - version +6.1.22 (Windows version)
  • WSL 2
  • Vagrant +2.2.18 (Linux version)
  • Vagrant plugin: virtualbox_WSL2

Meine Versionen

Wenn ihr WSL2 installiert habt könnt ihr nach sehen was darauf aktuell läuft. Bei mir ein Ubuntu 20.04 und der Docker-Desktop.

PS C:\Users\pfitz> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

Jetzt müssen wir Vagrant auf der WSL2 installieren. Es muss die gleiche Version sein die auf Windows läuft.

# auf der WSL2 Kiste
# MUSS die gleiche Version wie auf dem Windows System sein
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

Danach installieren wir das Vagrant WSL2 Plugin und setzen ein paar Umgebungsvariablen

# auf der WSL2 Kiste
vagrant plugin install virtualbox_WSL2

# Pfade setzen in der ~/.bashrc
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/Users/[USERNAME]/"
export PATH="$PATH:/mnt/d/Programs/Virtualbox"

source ~/.bashrc

WSL2 muss noch ein wenig konfiguriert werden

# /etc/wsl.conf
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=77,fmask=11"
mountFsTab = false

Danach starten wir den Service auf Windows neu

# Windows PowerShell als Admin
Restart-Service -Name "LxssManager"

Falls ihr beim installieren des Vagrant Plugins keine Meldung von der Windows Firewall bekommt solltet ihr prüfen ob  VirtualBox Headless Frontend die passenden Freigaben hat. UDP/TCP private und öffentlich muss offen sein.

Hyper-V an/ausschalten

Falls es Probleme gibt könnt ihr Hyper-V über bcedit wieder deaktivieren. Es ist jeweils ein Neustart nötig. Mit Hyper-V off sollte alles wieder laufen wie vorher.

# Windows PowerShell als Admin
# deaktivieren
bcdedit /set hypervisorlaunchtype off

# aktivieren
bcdedit /set hypervisorlaunchtype auto

Testen

Ob Docker funktioniert könnt ihr ganz einfach mit dem hello-world Container testen.

docker run hello-world

Eine VM stagen auf der WSL2 Konsole. Sollte eine VM in eurer Windows VirtualBox erzeugen

# Windows Benutzer Verzeichniss in WSL
cd /mnt/c/Users/<my-user-name>/

# Projekt Verzeichniss anlegen
mkdir -p projects/vagrant-demo
cd projects/vagrant-demo

# Vagrantfile mit der Vagrant CLI erzeugen
vagrant init hashicorp/bionic64
ls -l Vagrantfile

# VM starten
vagrant up

# auf der VM einloggen
vagrant ssh

Quellen:

Man kann sich auch eine Dual-Boot Konfiguration machen um mit oder ohne Hyper-V zu booten. Hab ich selbst aber noch nicht getestet. https://dev.to/deadlybyte/switch-off-hyper-v-on-boot-in-windows-5gpc

Neuen Kommentar hinzufügen

CAPTCHA
Diese Sicherheitsfrage überprüft, ob Sie ein menschlicher Besucher sind und verhindert automatisches Spamming.