Comment j’utilise Vagrant avec libvirt

Je l’admets : je suis un fan de Linux. Bien que j’utilise Slackware sur des postes de travail et Red Hat Enterprise Linux (RHEL) sur des serveurs depuis des années, j’aime voir comment les autres distributions font les choses. De plus, j’aime beaucoup tester les applications et les scripts que j’écris sur d’autres distributions pour assurer la portabilité. En fait, c’est l’un des grands avantages de Linux, à mon avis : vous pouvez télécharger une distribution et tester votre logiciel dessus gratuitement. Vous ne pouvez pas faire cela avec un système d’exploitation fermé, du moins pas sans casser un CLUF ou payer pour jouer, et même alors, vous vous inscrivez souvent pour télécharger plusieurs gigaoctets juste pour tester une application qui ne dépasse pas quelques centaines mégaoctets. Mais Linux est open source, il y a donc rarement une excuse pour ignorer au moins les trois ou quatre distributions principales, sauf que la configuration d’une machine virtuelle peut prendre beaucoup de clics et parfois un réseau virtuel complexe. Au moins, c’était l’excuse jusqu’à ce que Vagrant modifie le flux de travail de la machine virtuelle pour les développeurs.
Contents
- Qu’est-ce que Vagrant
- Qu’est-ce que libvirt
- Installer Vagrant
- Installation de libvirt et des packages de support
- Installation du plugin Vagrant-libvirt
- Configuration de votre environnement Vagrant
- Trouver une machine virtuelle Vagrant
- Démarrer une machine virtuelle avec Vagrant
- Entrer dans une machine virtuelle Vagrant
- Leaving a Vagrant virtual machine
- Détruire une machine virtuelle Vagrant
- Le vagabond est facile
Qu’est-ce que Vagrant
Vagrant est un simple gestionnaire de machine virtuelle pour votre terminal. Il vous permet d’extraire facilement une machine virtuelle minimale et pré-construite à partir d’Internet, de l’exécuter localement et de s’y connecter en SSH en quelques étapes seulement. C’est la configuration la plus rapide jamais réalisée pour une machine virtuelle. Il est idéal pour les développeurs Web qui ont besoin d’un serveur Web de test, les programmeurs qui ont besoin de tester une application sur plusieurs distributions et les amateurs qui aiment voir comment fonctionnent les différentes distributions.
Vagrant lui-même est également relativement minime. Ce n’est pas un framework de virtualisation lui-même. Il ne gère que vos machines virtuelles (“boîtes” dans la terminologie Vagrant). Il peut utiliser VirtualBox ou, via un plug-in, le projet léger libvirt en tant que backend.
Qu’est-ce que libvirt
Le projet libvirt est une boîte à outils conçue pour gérer la virtualisation, avec prise en charge de KVM, QEMU, LXC, etc. Vous pourriez le considérer comme une sorte d’API de machine virtuelle, permettant aux développeurs d’écrire des applications conviviales qui permettent aux utilisateurs d’orchestrer facilement la virtualisation via libvirt. J’utilise libvirt comme backend pour Vagrant car il est utile dans plusieurs applications, y compris virt-manager et GNOME Boxes.
Installer Vagrant
Vous pouvez installer Vagrant à partir de vagrantup.com/downloads. Des versions sont disponibles pour les systèmes basés sur Debian, les systèmes basés sur CentOS, macOS, Windows, etc.
Pour CentOS, Fedora ou similaire, vous obtenez un package RPM, que vous pouvez installer avec dnf
:
$ sudo dnf install ./vagrant_X.Y.ZZ_x86_64.rpm
Sur Debian, Linux Mint, Elementary et similaires, vous obtenez un package DEB, que vous pouvez installer avec apt
:
$ sudo apt install ./vagrant_X.Y.ZZ_x86_64.deb
Installation de libvirt et des packages de support
Sous Linux, votre distribution peut déjà avoir installé libvirt, mais pour permettre l’intégration avec Vagrant, vous avez également besoin de quelques autres packages. Installez-les avec votre gestionnaire de paquets.
Sur Fedora, CentOS et similaires :
$ sudo dnf install gcc libvirt
libvirt-devel libxml2-devel
make ruby-devel libguestfs-tools
Sur Debian, Linux Mint et similaires :
$ sudo apt install build-dep vagrant ruby-libvirt
qemu libvirt-daemon-system libvirt-clients ebtables
dnsmasq-base libxslt-dev libxml2-dev libvirt-dev
zlib1g-dev ruby-dev libguestfs-tools
En fonction de votre distribution, vous devrez peut-être lancer le libvirt
démon:
$ sudo systemctl start libvirtd
Installation du plugin Vagrant-libvirt
Dans Vagrant, libvirt est activé via un plug-in. Vagrant facilite l’installation d’un plug-in, de sorte que votre première commande Vagrant est une commande que vous exécuterez rarement à nouveau :
$ vagrant plugin install vagrant-libvirt
Maintenant que le plug-in libvirt est installé, vous pouvez commencer à utiliser des machines virtuelles.
Configuration de votre environnement Vagrant
Pour commencer avec Vagrant, créez un répertoire appelé ~/Vagrant
. C’est là que votre Vagrantfiles
sont stockés.
$ mkdir ~/Vagrant
Dans ce répertoire, créez un sous-répertoire pour représenter une distribution que vous souhaitez télécharger. Par exemple, supposons que vous ayez besoin d’une boîte de test CentOS.
Créez un répertoire CentOS, puis modifiez-le :
$ mkdir ~/Vagrant/centos
$ cd ~/Vagrant/centos
Vous devez maintenant trouver une machine virtuelle pour pouvoir convertir le répertoire que vous venez de créer en un environnement Vagrant.
Trouver une machine virtuelle Vagrant
D’une manière générale, les boîtes Vagrant proviennent de trois endroits différents : Hashicorp (les mainteneurs de Vagrant), les mainteneurs des distributions et des gens comme vous et moi. Certaines images sont minimales, destinées à servir de base à la personnalisation. En revanche, d’autres tentent de résoudre un besoin spécifique (par exemple, vous pouvez trouver une image de pile LAMP prête pour le développement Web). Vous pouvez trouver des images en parcourant ou en recherchant des boîtes dans le hub principal app.vagrantup.com/boxes/search.
Pour cet exemple, recherchez “centos” et trouvez l’entrée nommée generic/centos8
. Cliquez sur l’image pour obtenir des instructions sur l’utilisation de la machine virtuelle. Les instructions se déclinent en deux variétés :
- Le code dont vous avez besoin pour un Vagrantfile
- La commande dont vous avez besoin pour utiliser la box depuis un terminal
Cette dernière méthode est la plus simple :
$ vagrant init generic/centos8
Les init
La sous-commande crée un fichier de configuration, appelé Vagrantfile, dans votre répertoire actuel, qui transforme ce répertoire en un environnement Vagrant. A tout moment, vous pouvez consulter une liste des environnements Vagrant connus en utilisant le global-status
sous-commande :
$ vagrant global-status
id name provider state directory
-------------------------------------------
49c797f default libvirt running /home/tux/Vagrant/centos8
Démarrer une machine virtuelle avec Vagrant
Une fois que vous avez exécuté le init
commande, vous pouvez démarrer votre machine virtuelle avec vagrant up
:
$ vagrant up
Cela oblige Vagrant à télécharger l’image de la machine virtuelle si elle n’existe pas déjà localement, à configurer un réseau virtuel et à configurer votre box.
Entrer dans une machine virtuelle Vagrant
Une fois que votre machine virtuelle est opérationnelle, vous pouvez vous y connecter avec vagrant ssh
:
You connect to the box running in your current Vagrant environment. Once logged in, you can run all the commands native to that host. It’s a virtual machine running its own kernel, with emulated hardware and common Linux software.
Leaving a Vagrant virtual machine
To leave your Vagrant virtual machine, log out of the host as you normally exit a Linux computer:
box$ exit
Alternativement, vous pouvez mettre la machine virtuelle hors tension :
box$ sudo poweroff
Vous pouvez également arrêter le fonctionnement de la machine à l’aide de la vagrant
commander:
box$ vagrant halt
Détruire une machine virtuelle Vagrant
Lorsque vous avez terminé avec une machine virtuelle Vagrant, vous pouvez la détruire :
$ vagrant destroy
Alternativement, vous pouvez supprimer une machine virtuelle en utilisant le box
sous-commande :
$ vagrant box remove generic/centos8
Le vagabond est facile
Vagrant rend les machines virtuelles triviales, jetables et rapides. Lorsque vous avez besoin d’un environnement de test ou d’un faux serveur sur lequel effectuer un ping ou développer, ou d’un ordinateur de laboratoire propre pour l’expérimentation ou la surveillance, vous pouvez en obtenir un avec Vagrant. Certaines personnes pensent que les machines virtuelles ne sont plus pertinentes maintenant que les conteneurs ont pris le contrôle des serveurs, mais les machines virtuelles ont des caractéristiques uniques qui les rendent utiles. Ils exécutent leur propre noyau, disposent d’une pile complète et unique distincte de la machine hôte et utilisent du matériel émulé. Lorsqu’une machine virtuelle est ce dont vous avez besoin, Vagrant peut être le meilleur moyen de l’obtenir.