Vagrant lance les exécutables Windows directement depuis Linux. Si Linux est exécuté en tant que sous-système Windows pour Linux (WSL/WSL2) ou en tant que conteneur Docker sous l'hôte Windows, Vagrant depuis Linux cherchera le fichier exécutable PowerShell powershell.exe dans Windows. Il vous suffit d'ajouter le chemin d'accès de PowerShell à la variable d'environnement PATH sous Linux. Par exemple, si vous montez le lecteur Windows C:
como /mnt/c
sous Linux, ajoutez la variable PATH suivante :
export PATH="$PATH:/mnt/c/Windows/System32/WindowsPowerShell/v1.0"
Vous pouvez ajouter la ligne ci-dessus à votre ~/.profile
et le recharger en utilisant les commandes suivantes :
nano ~/.profile
source ~/.profile
De cette façon, Vagrant pourra démarrer.
Par le biais de la variable d'environnement VAGRANT_WSL_ENABLE_WINDOWS_ACCESS
En effet, Vagrant comprend qu'il peut accéder au système Windows pour exécuter des fichiers exécutables et utiliser des fonctions telles que les dossiers synchronisés. Vous pouvez trouver plus d'informations sur cette variable sur le site Page respective sur le site officiel de Vagrant . Ainsi, vous pouvez également avoir besoin d'ajouter la variable suivante :
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
Avec cette variable, Vagrant lancera les fichiers exécutables de Windows à partir de Linux, y compris l'application Windows cmd.exe
l'interpréteur de ligne de commande. Par conséquent, vous devez également ajouter le chemin d'accès à cmd.exe
:
export PATH="$PATH:/mnt/c/Windows/System32"
Sinon, vous obtiendrez l'erreur suivante.
The executable 'cmd.exe' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.
Et si vous utilisez VirtualBox installé dans Windows Host, vous devrez également ajouter le chemin d'accès à celui-ci :
export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"
Puisque Linux sous WSL est exécuté dans une machine virtuelle, vous ne pourrez pas exécuter un hyperviseur pour Linux comme VirtualBox qui aurait fonctionné sous WSL. Ainsi, Vagrant à partir de Linux utilisera VirtualBox installé sur l'hôte Windows.
Assurez-vous que vous utilisez la dernière version de Vagrant, ou au moins la 2.2.15, sinon il risque de ne pas pouvoir exécuter correctement les exécutables Windows à partir de Linux. Quoi qu'il en soit, l'exécution de Vagrant à partir de Linux pour créer des machines virtuelles dans Windows VirtualBox ne se déroule pas toujours sans heurts, vous pouvez obtenir des erreurs comme celle-ci :
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "a1d5c124-261b-4e4b-a11a-88f7bfdda6df", "--type", "headless"]
Stderr: VBoxManage.exe: error: Failed to get device handle and/or partition ID for
0000000001cf34e0 (hPartitionDevice=0000000000000a39, Last=0xc0000002/1)
(VERR_NEM_VM_CREATE_FAILED)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
Pour éviter ces erreurs, et faire en sorte que Vagrant fonctionne de manière fiable, il suffit d'exécuter Linux sous du matériel physique, et non à partir de WSL ou d'un conteneur docker sous Windows. Dans ce cas, VirtualBox fonctionnera également depuis Linux, et Vagrant n'aura pas besoin de communiquer entre Linux et Windows en exécutant des exécutables Windows sur Linux.
Il existe un Vidéo YouTube sur l'installation de Vagrant sous Ubuntu 18 en WSL1 pour Windows 10 et VirtualBox . Mais comme cette vidéo montre l'utilisation d'un ancien logiciel, il se peut que les logiciels plus récents ne fonctionnent pas comme décrit dans la vidéo. Vous pouvez exécuter Vagrant avec --debug
pour trouver ce qui ne va pas, mais cela ne permet pas toujours de trouver la solution. Voici un exemple d'exécution de Vagrant avec une sortie de débogage :
vagrant --debug up