Par défaut, Vagrant utilise Oracle VirtualBox comme fournisseur. Si plusieurs fournisseurs sont installés (par exemple, Virtualbox et Libvirt) sur votre système, il démarrera toujours une machine virtuelle avec Virtualbox, sauf si vous fournissez explicitement un fournisseur spécifique. Dans ce bref guide, voyons comment utiliser Vagrant avec le fournisseur Libvirt KVM sous Linux.
Vagabond n'est pas un fournisseur de virtualisation autonome. Il s'appuie sur d'autres fournisseurs de virtualisation tels que Virtualbox, Libvirt/KVM, Docker, VMWare pour créer et exécuter des machines virtuelles.
L'une des grandes caractéristiques de Vagrant est que les utilisateurs ne sont jamais liés à une plate-forme de virtualisation spécifique. Les utilisateurs peuvent créer des workflows qui fonctionnent avec plusieurs fournisseurs de virtualisation.
Actuellement, Vagrant prend en charge plus de 30 fournisseurs. Vous pouvez consulter la liste complète des fournisseurs pris en charge ici .
1. Installer KVM sous Linux
Tout d'abord, vous devez installer KVM sur votre système Linux. Nous avons déjà documenté les étapes d'installation de KVM pour les systèmes basés sur DEB et les systèmes basés sur RPM. Suivez simplement les liens pour installer KVM sur votre distribution Linux préférée.
- Installer et configurer KVM sur le serveur CentOS 8
- Installer et configurer KVM dans le serveur sans tête Ubuntu 20.04
- Installer et configurer KVM dans OpenSUSE Tumbleweed
2. Installer le plug-in vagrant-libvirt sous Linux
Pour exécuter des machines virtuelles Vagrant sur KVM, vous devez installer le vagrant-libvirt
brancher. Ce plugin ajoute le fournisseur Libvirt à Vagrant et permet à Vagrant de contrôler et de provisionner des machines via Libvirt.
Installez les dépendances nécessaires pour vagrant-libvirt
plugin.
Sur Ubuntu :
$ sudo apt install qemu libvirt-daemon-system libvirt-clients libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev ruby-libvirt ebtables dnsmasq-base
Sur CentOS, Fedora :
$ sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel
Maintenant, installez vagrant-libvirt
plugin en utilisant la commande :
$ vagrant plugin install vagrant-libvirt
Vous devez également installer vagrant-mutate
plugin qui convertit les boîtes vagabondes pour travailler avec différents fournisseurs.
$ vagrant plugin install vagrant-mutate
3. Utiliser Vagrant avec le fournisseur KVM Libvirt
3.1. Assurez-vous que la boîte Vagrant que vous souhaitez utiliser prend en charge le fournisseur libvirt. Pour découvrir les boîtes vagrantes supportées par libvirt, il suffit de sélectionner le "libvirt" option dans le référentiel Vagrant Cloud.
Pour les besoins de ce guide, je vais utiliser une boîte CentOS 7.
3.2. Accédez au répertoire de votre projet Vagrant et initialisez l'environnement Vagrant :
$ vagrant init centos/7
3.3. Ensuite, exécutez la commande suivante pour démarrer la machine virtuelle :
$ vagrant up --provider=libvirt
Ici, --provider=libvirt
L'option indique explicitement à Vagrant d'utiliser libvirt KVM pour exécuter la machine virtuelle. Signification - KVM agit ici comme fournisseur par défaut.
Exemple de résultat :
Bringing machine 'default' up with 'libvirt' provider... ==> default: Box 'centos/7' could not be found. Attempting to find and install... default: Box Provider: libvirt default: Box Version: >= 0 ==> default: Loading metadata for box 'centos/7' default: URL: https://vagrantcloud.com/centos/7 ==> default: Adding box 'centos/7' (v2004.01) for provider: libvirt default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/libvirt.box Download redirected to host: cloud.centos.org default: Calculating and comparing box checksum... ==> default: Successfully added box 'centos/7' (v2004.01) for 'libvirt'! ==> default: Uploading base box image as volume into Libvirt storage... ==> default: Creating image (snapshot of base box volume). ==> default: Creating domain with the following settings... ==> default: -- Name: myvagrants_default ==> default: -- Domain type: kvm ==> default: -- Cpus: 1 ==> default: -- Feature: acpi ==> default: -- Feature: apic ==> default: -- Feature: pae ==> default: -- Memory: 512M ==> default: -- Management MAC: ==> default: -- Loader: ==> default: -- Nvram: ==> default: -- Base box: centos/7 ==> default: -- Storage pool: default ==> default: -- Image: /var/lib/libvirt/images/myvagrants_default.img (41G) ==> default: -- Volume Cache: default ==> default: -- Kernel: ==> default: -- Initrd: ==> default: -- Graphics Type: vnc ==> default: -- Graphics Port: -1 ==> default: -- Graphics IP: 127.0.0.1 ==> default: -- Graphics Password: Not defined ==> default: -- Video Type: cirrus ==> default: -- Video VRAM: 9216 ==> default: -- Sound Type: ==> default: -- Keymap: en-us ==> default: -- TPM Path: ==> default: -- INPUT: type=mouse, bus=ps2 ==> default: Creating shared folders metadata... ==> default: Starting domain. ==> default: Waiting for domain to get an IP address... ==> default: Waiting for SSH to become available... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Rsyncing folder: /home/sk/myvagrants/ => /vagrant
Comme vous pouvez le voir sur la première ligne de la sortie ci-dessus, Vagrant utilise le fournisseur "libvirt" pour lancer la machine virtuelle CentOS 7.
3.4. Alternativement, vous pouvez dire à Vagrant d'utiliser en permanence libvirt comme fournisseur par défaut en ajoutant la variable d'environnement suivante.
export VAGRANT_DEFAULT_PROVIDER=libvirt
4. Vérifiez si la VM est en cours d'exécution dans Libvirt KVM
4.1. Vous pouvez vérifier si la machine virtuelle CentOS 7 fonctionne vraiment dans le fournisseur Libvirt KVM de Virsh interface de ligne de commande.
$ virsh list
Exemple de résultat :
Id Name State ------------------------------------ 2 myvagrants_default running
Ou, utilisez le vagrant status
commande :
$ vagrant status
4.2. Vous pouvez également le vérifier à partir d'applications d'interface graphique de gestion KVM comme Virt-manager .
5. Dépannage
Si une autre box Vagrant utilise déjà un fournisseur différent (par exemple, virtualbox), vous verrez le message d'erreur suivant lorsque vous essayez de démarrer la nouvelle VM :
$ vagrant up --provider libvirt An active machine was found with a different provider. Vagrant currently allows each machine to be brought up with only a single provider at a time. A future version will remove this limitation. Until then, please destroy the existing machine to up with a new provider. Machine name: default Active provider: virtualbox Requested provider: libvirt
Comme indiqué dans la sortie ci-dessus, Vagrant peut exécuter une machine virtuelle avec un seul fournisseur à la fois. Cette limitation pourrait être résolue dans la future version.
Avant d'exécuter une autre machine virtuelle avec un fournisseur différent, supprimez d'abord la machine active existante à l'aide de la commande :
$ vagrant destroy
Tapez "y" et appuyez sur ENTER pour supprimer la machine active par défaut :
default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives...
Maintenant, démarrez la VM avec un nouveau fournisseur, c'est-à-dire KVM dans ce cas :
$ vagrant up --provider libvirt
6. Conclusion
Dans ce guide, nous avons appris à utiliser Vagrant avec le fournisseur KVM libvirt sous Linux. Nous avons également examiné comment vérifier si la machine virtuelle s'exécute dans Libvirt KVM.