Vagrant et VMWare sur MacOS Apple M1/M2

Très souvent, dans le développement, il est nécessaire de créer un environnement local pour débogguer tous les moments de travail. Dans mon travail, j’utilise constamment Vagrant pour tester le code d’infrastructure, comme les rôles ansible

Vagrant reste l’un des utilitaires les plus populaires pour de telles tâches, il a une syntaxe flexible et prend en charge les structures algorithmiques de base – vous pouvez élever les machines N et K dans une boucle en utilisant des variables entrées à l’avance, puis également générer un inventaire ansible à la sortie , divisant les machines en groupes.

Figure 1. Configuration Vagrant pour la création en boucle de machines virtuelles
Figure 1. Configuration Vagrant pour la création en boucle de machines virtuelles

Pendant longtemps, je suis resté un utilisateur de MacBook sur un processeur Intel, mais cela ne pouvait plus continuer – j’ai dû changer d’ordinateur, même si je connaissais certaines fonctionnalités du M1 avec des machines virtuelles.

Dans cet article, je vais vous montrer comment configurer et exécuter Vagrant et VMWare sur MacOS Apple M1/M2  et revenir au mode de fonctionnement normal.

Installation du poste de travail

  1. Rosetta 2 : permet aux Mac équipés de processeurs Apple d’utiliser des applications conçues pour les Mac équipés de processeurs Intel.
  2. Vagrant (2.3.0+) : Logiciel de création et de configuration d’un environnement de développement virtuel. Il s’agit d’un wrapper pour les logiciels de virtualisation tels que VirtualBox et les outils de gestion de configuration tels que Chef, Salt et Puppet.
  3. Vagrant-vmware-desktop (3.0.1+) : Un plugin qui permet à vagrant de contrôler les machines basées sur VMware, offrant une meilleure stabilité et de meilleures performances que les logiciels VMware.
  4. Utilitaire vmware Vagrant (1.0.21+) :  service qui permet à vagrant-vmware-desktop d’accéder à diverses fonctionnalités VMware. Il est également utilisé pour effectuer des opérations nécessitant un accès privilégié sur l’hôte, des opérations réseau et la vérification de la machine.
  5. Hyperviseur (VMware Fusion Public Tech Preview 22H2) : Hyperviseur de machines virtuelles

Installation

1 rosette

Tout d’abord, vous devez installer Rosetta 2, pour cela, lancez la commande suivante :

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

2. Vagrant

Ensuite, vous devez installer Vagrant lui-même. Cela peut être fait en le téléchargeant depuis le site officiel https://www.vagrantup.com/downloads  – en choisissant MacOS et en installant dmg, ou via brew en exécutant la commande :

brew install vagrant

Vous pouvez également vérifier que Vagrant s’exécute depuis la console :

vagrant -v                                                                                                                                                                 ✔
vagrant global-status
Figure 3 Exemple de sortie d'un Vagrant fraîchement installé
Figure 3 Exemple de sortie d’un Vagrant fraîchement installé

3. Hyperviseur

Ici, les premières blagues commencent, mais avant tout. Nous ne pouvons pas simplement prendre et télécharger à partir du site Web de VMWare. Mais nous pouvons voir la version actuelle. Nous allons sur le site https://customerconnect.vmware.com/downloads/get-download?downloadGroup=FUS-PUBTP-22H2 , nous y trouvons et notons les chiffres :

Figure 4. Mémorisation de la version actuelle de VMware Fusion Technology Preview II 22H2
Figure 4. Mémorisation de la version actuelle de VMware Fusion Technology Preview II 22H2

Après cela, nous pouvons télécharger ce fichier à partir du lien, en remplaçant la version par la version actuelle. Par exemple, vous pouvez utiliser la commande :

wget https://download3.vmware.com/software/FUS-PUBTP-22H2/VMware-Fusion-e.x.p-#{version}_universal.dmg

Alternativement, vous pouvez installer via brew :

brew install --cask vmware-fusion

Mais ce n’est pas tout. Le fait est que  » Tech Preview  » est installé dans son propre chemin ( /Applications/VMWare Fusion Tech Preview.app), et les fournisseurs Vagrant chercheront VMWare dans le standard ( /Applications/VMWare Fusion.app). Pour résoudre ce malentendu, utilisons la commande :

ln -s /Applications/VMWare\ Fusion\ Tech\ Preview.app /Applications/VMWare\ Fusion.app

4. Utilitaire vmware Vagrant

La page dédiée à cet utilitaire est : https://developer.hashicorp.com/vagrant/docs/providers/vmware/vagrant-vmware-utility , mais vous pouvez simplement suivre le lien ci-dessous pour télécharger et installer la dernière version https:// /developer.hashicorp .com/vagrant/downloads/vmware . Alternativement, vous pouvez utiliser à nouveau l’infusion :

brew install vagrant-vmware-utility

Après l’installation, je recommande de vérifier les performances de l’utilitaire, en passant, vous pouvez le déboguer de la même manière pour comprendre ce qui ne fonctionne pas (j’ai découvert l’incompatibilité des chemins d’installation):

sudo /opt/vagrant-vmware-desktop/bin/vagrant-vmware-utility api -debug

La sortie peut donner une erreur indiquant que le port 9922 est déjà occupé. Cela se produit si l’utilitaire est déjà activé et en cours d’exécution. Il peut être désactivé et débogué.

Vérifiez si les ports sont occupés :

sudo lsof -i -P | grep LISTEN | grep 'vagrant-v'
Figure 5. Sortie de la console si l'utilitaire vmware vagrant occupe un port
Figure 5. Sortie de la console si l’utilitaire vmware vagrant occupe un port

Utilitaire de téléchargement :

sudo launchctl unload -w /Library/LaunchDaemons/com.vagrant.vagrant-vmware-utility.plist

Téléchargez l’utilitaire :

sudo launchctl load -w /Library/LaunchDaemons/com.vagrant.vagrant-vmware-utility.plist

Vous pouvez également vérifier la fonctionnalité de l’utilitaire avec la commande :

sudo launchctl list | grep vagrant
Figure 6. Sortie de la console si l'utilitaire vagrant vmware est lancé avec succès
Figure 6. Sortie de la console si l’utilitaire vagrant vmware est lancé avec succès

5. Plugin VMWare Vagrant

Pour installer le plugin, lancez simplement la commande :

vagrant plugin install vagrant-vmware-desktop

Ceci termine l’installation, il est temps d’essayer de démarrer la machine virtuelle.

Démarrage de la machine virtuelle

Ensuite, le plus difficile 🙂 En général, tout ce qui précède peut passer sans erreur, mais la machine ne démarre toujours pas. J’ai essayé de nombreuses variantes, combinaisons et paramètres de vagrantfile et je vous fournirai une solution qui a fonctionné pour moi et mes étudiants.

J’ai pu identifier trois problèmes principaux lors du démarrage d’une machine virtuelle :

  1. Boxe (image de machine virtuelle) pour les processeurs ARM
    Les images prêtes à l’emploi diffèrent selon les fournisseurs , sous lesquels elles sont affinées, les processeurs et le contenu. Il y a des images populaires qui n’ont pas fonctionné pour moi, il y a des images avec 100 téléchargements qui se sont avérées efficaces.
    J’ai opté pour les éléments suivants : spox/ubuntu-arm et bytesguy/ubuntu-server-20.04-arm64
  2. GUI
    Pour des raisons que je n’ai pas encore pu comprendre (dites-le moi dans les commentaires !) – la machine virtuelle ne démarrera pas si l’interface graphique est désactivée (et elle est désactivée par défaut). Compte tenu de cette fonctionnalité, vous devez ajouter un paramètre vmware.gui = trueà la configuration de Vagrantfile
  3. Réseau
    Lorsque votre machine est déjà pratiquement en cours d’exécution, vagrant peut geler par traîtrise à une étape ==> default: Waiting for the VM to receive an address...
    La solution a été trouvée – spécifiez vmware.vmx["ethernet0.virtualdev"]= « vmxnet3 » dans la configuration de Vagrantfile

Nous créons un répertoire pour la configuration de notre future machine et Vagrantfile dedans. Le Vagrantfile final est le suivant :

Vagrant.configure("2") do |config|
  config.vm.box = "spox/ubuntu-arm"
  config.vm.box_version = "1.0.0"
  config.vm.provider :vmware_desktop do |vmware|
    vmware.gui = true
    vmware.cpus = 2
    vmware.vmx["ethernet0.virtualdev"] = "vmxnet3"
    vmware.ssh_info_public = true
    vmware.linked_clone = false
  end
end

On démarre la machine avec la commande habituelle vagrant up:

Figure 7. Démarrage réussi de la machine virtuelle
Figure 7. Démarrage réussi de la machine virtuelle

On se connecte à une machine fraîchement créée par vagrant ssh:

Figure 8. Connexion SSH réussie
Figure 8. Connexion SSH réussie

C’est tout, j’espère que mon guide vous a aidé à économiser vos nerfs et votre temps. Je vous souhaite une agréable utilisation du portable et à bientôt 🙂 Bon, si vous êtes intéresser pas les sujets DevOps, Cloud et d’administration système ,n’hésitez pas de lire d’autre articles dans notre catégorie DevOps & Cloud

About Oussama ABAI

One thought on “Vagrant et VMWare sur MacOS Apple M1/M2

  1. Bonjour,

    Je ne suis pas très loin de réussir ce que je souhaiterais faire. Votre auto est d’une grande aide, cependant je me pose la question suivante : avez-vous trouvé le moyen de définir l’adresse IP que vous souhaitez attribuer à la machine ?

    J’en suis là, j’ai une erreur :

    /etc/netplan/50-vagrant.yaml:6:5: Error in network definition: Invalid name  »
    !  »:
    ^

    lorsque je tente d’attribuer une adresse privée.

    Merci par avance si vous avez une solution.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Résoudre : *
28 + 25 =