Vagrant+VirtualBox sous MacOS Catalina : Mais Ça Marche Sur Mon Ordinateur !

Qu’est-ce que Vagrant?

Lancé pour la première fois en mars 2010 par Mitchell Hashimoto de Hashicorp et son associé John Bender, Vagrant est un outil en ligne de commande open-source pour la gestion du cycle de vie des machines virtuelles (VM). L’utilitaire vise à augmenter la productivité du développement en simplifiant considérablement ce processus. Alors que Vagrant était à l’origine lié à Oracle VirtualBox, depuis la version 1.1, il prend également en charge VMware, KVM et d’autres. Pourtant, aussi utile que soit la virtualisation dans le développement web, l’utilisation de Vagrant n’est pas toujours une option infaillible.

Pourquoi utiliser Vagrant? En vaut-il la peine?

Tout d’abord, Vagrant offre une bien plus grande flexibilité avec un environnement basé sur un hyperviseur. Cela permet aux développeurs de créer des environnements nécessitant des fonctionnalités disponibles uniquement sur d’autres systèmes.

Par exemple, si vous deviez créer une application qui prend en charge diverses OS et noyaux, vous pourriez facilement créer un certain nombre de machines virtuelles pouvant exécuter des tests en utilisant Vagrant. De même, si vous vouliez reproduire l’environnement de votre client (OS, ressources, etc.), combiner les VMs et Vagrant pourrait également être particulièrement utile.

Installation de Vagrant sur un poste de travail

Pour commencer avec Vagrant, téléchargez l’installateur ou le package approprié depuis la page officielle Téléchargements Vagrant. Les instructions ci-dessous sont pour Vagrant v2.3.3 (la dernière version à partir de décembre 2022).

Installation de Vagrant sous Windows

Afin d’installer Vagrant sous Windows, vous devez d’abord télécharger le package MSI. Ensuite, vous pouvez simplement exécuter le fichier et passer par un processus d’installation classique.

Note : L’installateur ajoutera automatiquement ‘vagrant’ à votre chemin de système, donc il sera également disponible dans les terminaux. Si Vagrant n’est pas trouvé, cependant, essayez de vous déconnecter puis de vous reconnecter au système, car c’est une occurrence courante sous Windows.

Installation de Vagrant sur MacOS Catalina

En supposant que vous avez déjà un gestionnaire de paquets ‘brew’ installé, pour configurer rapidement Vagrant sur Mac, vous pouvez exécuter l’installation avec cette commande en une ligne :

 

```bash
$> brew install vagrant
```

Sinon, vous pouvez installer Vagrant à partir de binaires.

Installation de Vagrant sous Linux

Pour les systèmes Linux, nous allons démontrer le processus d’installation pour Vagrant sur Ubuntu 20.04:

Installez la clé :

 

```bash
$> wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
```

Ajoutez le dépôt :

 

```bash
$> echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
```

Tirez les mises à jour et exécutez l’installation :

 

```bash
$> sudo apt update && sudo apt install vagrant
```

Voilà tout ce qu’il y a à faire ! Maintenant, tout ce que vous avez à faire est d’ouvrir votre terminal et de taper « vagrant ». Il convient également de noter, cependant, que si vous exécutez Vagrant seul, vous obtiendrez une liste des sous-commandes disponibles.

Problèmes principaux que vous pouvez rencontrer lors de l’installation de Vagrant

Bien que les erreurs d’installation de Vagrant soient assez rares, la probabilité de ce problème augmente considérablement si plusieurs hyperviseurs sont installés sur votre machine. Après tout, les hyperviseurs ne permettent généralement pas la création de machines virtuelles lorsqu’ils sont plus d’un en usage.

Les solutions rapides suivantes, tirées de la documentation officielle de Vagrant, peuvent vous aider à utiliser Vagrant et VirtualBox lorsqu’un autre hyperviseur est présent :

Sur Linux

Lors de l’utilisation d’un autre hyperviseur, vous pouvez rencontrer l’erreur ci-dessous :

 

```bash
There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", <ID of the VM>, "--type", "headless"]

Stderr: VBoxManage: error: VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE).
VBoxManage: error: VirtualBox can't operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot
(VERR_VMX_IN_VMX_ROOT_MODE)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
```

Afin de faire fonctionner correctement VirtualBox, tous les autres hyperviseurs devront être ajoutés à la liste d’exclusion de votre système.

Pour ce faire, découvrez d’abord quel est le nom de l’hyperviseur :

 

```bash
$> lsmod | grep kvm
kvm_intel             204800  6
kvm                   593920  1 kvm_intel
irqbypass              16384  1 kvm
```

Ensuite, utilisez simplement la commande « blacklist » pour ajouter l’hyperviseur à votre liste d’exclusion.

 

```bash
echo 'blacklist kvm-intel' >> /etc/modprobe.d/blacklist.conf
```

Enfin, redémarrez votre machine et utilisez à nouveau la commande « vagrant ».

Sur Windows

Sur Windows, si vous essayez de démarrer une machine virtuelle VirtualBox, vous risquez de tomber sur un écran bleu provocant.

Pour utiliser VirtualBox normalement, vous devez vous assurer que Hyper-V est désactivé. Utilisez la commande simple suivante pour désactiver la fonctionnalité sur Windows 10:

 

```PowerShell
$> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
```

Sur Windows 11, vous pouvez également utiliser une session Powershell élevée:

 

```PowerShell
$> bcdedit /set hypervisorlaunchtype off
```

Alternativement, vous pouvez désactiver Hyper-V à partir des paramètres système Windows.

  • Faites un clic droit sur le bouton Windows et choisissez « Applications et fonctionnalités »
  • Ouvrez « Activer ou désactiver les fonctionnalités Windows »
  • Décochez Hyper-V et cliquez finalement sur OK

Redémarrez votre machine pour appliquer ces modifications.

Sur MacOS

Si vous rencontrez le message d’erreur suivant lors de l’exécution de VBoxManage:

échec de l'ouverture de /dev/vboxnetctl: Aucun fichier ou répertoire de ce type

Réinstallez soit VirtualBox complètement, soit utilisez simplement les commandes ci-dessous :

 
sudo /Library/StartupItems/VirtualBox/VirtualBox restart

ou

 
sudo /Library/StartupItems/VirtualBox/VirtualBox start

Notez que dans les versions les plus récentes, le fichier /Library/StartupItems/VirtualBox/VirtualBox n’existe pas, vous devrez donc utiliser la commande suivante :

 
sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.pl

MacOS Catalina : Mais Ça Marche Sur Mon Ordinateur

Un autre problème qui peut survenir sur Mac est ce problème classique lorsque vous entendez qu’une application « fonctionne bien sur mon ordinateur », et aucune quantité de prières ou de pleurs ne peut la faire fonctionner de la même manière ailleurs. Mon équipe de SPG avait également été confrontée à ce problème avant.

Imaginez que vous êtes actuellement en train de déployer et de tester des environnements locaux avec Vagrant + VirtualBox. L’un des ingénieurs logiciels de votre équipe utilise une version personnalisée de VagrantBox, qui fonctionne jusqu’ici très bien pour eux. Ils seront connus comme Développeur 1. Sur leur poste de travail, VirtualBox v6.1.34, Vagrant 2.2 et Ubuntu fonctionnent tous sans problème.

D’un autre côté, il est clair que Développeur 2 doit mettre à niveau son environnement local. Ils utilisent actuellement un mélange de MacOS, de VirtualBox v6.1.24 et de Vagrant 2.1.x sur leur propre poste de travail.

En conséquence, au moins à première vue, la stratégie du Développeur 2 semble simple :

  • Étape 1 : Mettre à jour les versions de VirtualBox et de Vagrant (il est crucial d’utiliser des versions unifiées)
  • Étape 2 : Installer tous les composants supplémentaires du projet

Les deux opérations sont réussies, mais le résultat est certainement inattendu — pour une raison quelconque, le site web qui a été installé sur VirtualBox est maintenant totalement inaccessible. Qu’est-ce que c’est que ça!?

Face à un tel casse-tête, il est essentiel de réfléchir à une solution et de prendre des mesures sensées telles que celles énumérées ci-dessous :

  • Examiner les fichiers journaux
  • Vérifier que tous les services de VirtualBox, tels que PHP, Nginx et MySQL, sont opérationnels
  • Utiliser curl pour accéder à la page

Dans ce cas, cependant, tout semble fonctionner comme il se doit, sans problèmes évidents à l’intérieur de l’instance VirtualBox elle-même.

Votre équipe décide alors de changer de tactique et de déterminer si l’hôte VirtualBox est accessible de l’extérieur. Après avoir utilisé une commande ping simple, ils sont pris au dépourvu en découvrant que 100% des paquets sont perdus. Bien que cette nouvelle soit quelque peu préoccupante, cela pourrait également être la cause de tout le problème.

En suivant cette piste, ils finissent par découvrir que les adaptateurs HostOnly doivent désormais recevoir une gamme différente d’adresses IP. Cela a apparemment commencé avec la mise à jour VirtualBox v6.1.30 (une mise à jour corrective, par-dessus le marché) :

 

192.168.55.х prior to the update

192.168.56.х. after the update.

Là, clairement exposé dans le récemment révisé manuel d’utilisation de VirtualBox user manual

Sur Linux, Mac OS X et Solaris, Oracle VM VirtualBox ne permettra d’attribuer des adresses IP que dans la plage 192.168.56.0/21 aux adaptateurs host-only.”

Tout le monde dans votre équipe respire un soupir de soulagement. Le problème disparaît soudainement après la création d’un nouvel adaptateur HostOnly et le changement de celui dans l’instance VirtualBox. La composante web critique de la solution est enfin accessible, et Developer 2 est enfin heureux.

Vagrant ou…? Quelles alternatives existent? En quoi sont-elles meilleures?

Avec autant d’excitation, on pourrait vous pardonner de chercher des alternatives à Vagrant. Si vous le faisiez, cependant, vous rencontreriez probablement un certain nombre de sites Web qui comparent l’utilité aux conteneurs (plus souvent que pas, Docker). Mais est-ce vraiment une comparaison valide? Il s’avère que c’est le cas, tant que vous êtes conscient de la différence entre les deux.

Beaucoup des avantages que Docker a sur les hyperviseurs peuvent également être considérés comme des inconvénients – cela dépend simplement de ce dont vous avez besoin. Commençons donc par un grand: le temps de chargement. Alors que les conteneurs peuvent démarrer rapidement car ils ne sont essentiellement qu’un ensemble de processus, cela signifie également qu’ils utilisent le noyau hôte. En conséquence, au lieu de s’appuyer sur un matériel virtualisé, les conteneurs utiliseront directement le matériel de l’hôte.

Les hyperviseurs peuvent également disposer de ressources dédiées sous la forme de mémoire, de temps CPU, d’espace disque et d’autres. Les conteneurs, en revanche, partagent des ressources avec d’autres processus sur l’ordinateur hôte. De même, alors que Vagrant vous permet de créer une machine virtuelle entière – ce qui nécessitera plus de temps et de ressources – l’approche conteneurisée de Docker vous permet de déployer plus rapidement avec moins de ressources.

Alors, gardez cela à l’esprit, rappelez-vous simplement que ce n’est pas une compétition. Il s’agit simplement de répondre aux besoins de votre entreprise.

Conclusion

Bien que Vagrant soit sans aucun doute un outil formidable, il n’est pas non plus à l’abri des problèmes. Si votre entreprise manque d’expertise ou de connaissances, une équipe dédiée de développeurs de logiciels pourrait être en mesure d’aider. Après tout, même lorsqu’il ne « fonctionne que sur ma machine », une solution existe pour chaque problème.

Source:
https://dzone.com/articles/vagrantvirtualbox-on-macos-catalina-but-it-works-o