GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Vagrant avec le fournisseur KVM Libvirt

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.


Linux
  1. Comment j'utilise Vagrant avec libvirt

  2. Comment utiliser la commande ethtool avec des exemples

  3. Comment utiliser l'exportation avec Python sous Linux

  4. Comment utiliser regex avec la commande find ?

  5. Comment utiliser la commande `subprocess` avec des pipes

Comment modifier l'emplacement du pool de stockage par défaut de KVM Libvirt

Comment utiliser PostgreSQL avec l'application Ruby On Rails

Comment travailler avec Ansible Provisioner dans Vagrant

Comment utiliser une clé SSH avec des utilisateurs non root

Comment utiliser la commande shutdown avec des exemples

Comment utiliser Let's Encrypt avec Cloudflare