VM Linux sur Windows 10 : Vagrant & Ansible
Maj: nouvelle version en utilisant vagrant en lieu et place multipass
Après des heures de tests avec la version 2 de WSL, j’ai failli renoncer à garder ma machine sous Windows 10 et à la passer sous Linux. Mais voilà, je me suis souvenu du projet Multipass de Canonical et là tout est redevenu simple.
Canonical ne se limite pas à délivrer Ubuntu, mais propose aussi tout un écosystème complet d’outils. Parmi eux on trouve Multipass qui facilite la gestion de VM Ubuntu depuis n’importe quelle plateforme Linux, MacOs et Windows.
Je vous propose dans ce tutoriel de mettre en place un environnement de Dévoleppoment avec Multipass hébergé dans l’hyperviseur hyperv de Microsoft. Cet VM de Dev doit pouvoir héberger des VM provisionner avec Vagrant et Ansible, mais aussi des containers Docker. Pour des raisons de performances j’ai choisi de prendre kvm comme hyperviseur dans ma VM.
Cet environnement doit être simple à mettre en œuvre et surtout rapide.
Installation des produits nécessaires : hyperv, cifs et multipass
J’ai fait le choix d’hyperv car il est tout intégré dans Windows 10, mais vous pouvez également utiliser VirtualBox.
Prérequis :
- Windows 10 Entreprise, Professionnel ou Éducation
- Processeur 64 bits avec traduction d’adresse de second niveau (SLAT).
- Processeur prenant en charge les extensions de mode du moniteur de machine virtuelle (VT-c sur les processeurs Intel).
- Au minimum 4 Go de mémoire.
Activation d’hyper-v et SMB/CIFS
Dans un premier temps il faut activer hyper-v et le partage SMB/CIFS sur votre poste Windows. Dans une fenêtre Powershell ouverte en tant qu’administrateur, taper les commandes suivantes
Installation de Multipass
Vous pouvez télécharger la dernière version de Multipass sur la page du projet github de multipass ↗
Création de la première VM
Normalement Multipass devrait avoir provisionner une VM répondant au nom de primary. On va de suite la détruire car trop petite. Dans une fenêtre de commande :
La dernière commande permet de définir le nom de la vm par défaut de multipass.
Pour créer ma VM de dev je vais utiliser cloud-init pour la configurer rapidement. Cela permettra aussi de la détruire et la reconstruire en peu de temps.
Il faut avant génerer une clé SSH qui servira à se connecter à la machine rapidement depuis visual studio code. Toujours dans votre fenêtre de commande tapez :
Acceptez les valeurs par défaut. Afficher le contenu du fichier .ssh/id_ed25519.pub il va vous servir à l’étape suivante. Maintenant, créez dans votre répertoire de travail un fichier yaml se nommant cloud-init.yaml et déposez y le contenu suivant et remplacer la 3ème ligne avec le contenu du fichier précédent (gardez bien le tiret):
Ce fichier permet de :
- mettre à jour la vm Linux;
- d’installer plein de produits dont python, docker, vagrant et tout ce qu’il faut pour le développement d’applications en Python. A vous de le compléter à vos besoins.
- de lancer des commandes de configuration pour installer ansible, le plugin libvirt pour vagrant et de donner les droits au user ubuntu de lancer des commandes docker.
Maintenant lançons le provisionnement de la VM en modifiant le chemin du fichier cloud-init.yaml :
Patience … Cela dure quelques minutes le temps de tout installer et configurer.
Cette VM possède :
- une distribution Ubuntu groovy (vous pouvez en prendre une autre: multipass list)
- 4 CPU (-c)
- 10G de mémoire (-m)
- un disque de 20G (-d)
Activation de la virtualisation imbrigué sur notre VM
La virtualisation imbriquée est une fonctionnalité qui vous permet d’exécuter de créer des VMS dans une VM.
Pour cela il faut dans un premier temps arrêter la VM :
Dans une fenêtre PowerSell ouverte en tant qu’administrateur :
Maintenant redémarrer votre VM et connectez vous y :
Vous devriez obtenir une invit de commande ubuntu@dev. Vérifions que kvm fonctionne :
Vous devriez obtenir ceci :
Création de VM avec vagrant
Toujours dans votre VM dev tapez les commandes suivantes, au moment du choix d’hyperviseur prenez bien libvirt :
Au bout de quelques minutes vous devriez pouvoir vous connecter à votre VM dans la VM:
Et voila.
Accès à votre VM depuis visual code (installé sur Windows)
On va tout simplement utiliser l’extension Remote SSH. Installer la. Pour configurer l’accès il faut juste récupérer le nom de la vm dans le fichier C:\Windows\System32\drivers\etc\hosts.ics Moi j’avais dev.mshome.net Je vous conseille bien de mettre ce nom que plutôt ce nom qu’une adresse IP. Et oui si vous détruisez et reconstruisez votre VM elle n’aura pas la même adresse IP.
Je vous laisse lire ce tuto ↗ pour utiliser cette extension.
Et voila un vrai bonheur. Finis les galères avec WSL.