Standardmäßig verwendet Vagrant Oracle VirtualBox als Anbieter. Wenn mehr als ein Anbieter in Ihrem System installiert ist (z. B. Virtualbox und Libvirt), wird immer eine VM mit Virtualbox gestartet, es sei denn, Sie geben explizit einen bestimmten Anbieter an. Lassen Sie uns in dieser kurzen Anleitung sehen, wie Sie Vagrant mit dem Libvirt KVM-Anbieter unter Linux verwenden.
Landstreicher ist kein eigenständiger Virtualisierungsanbieter. Es stützt sich auf andere Virtualisierungsanbieter wie Virtualbox, Libvirt/KVM, Docker, VMWare, um virtuelle Maschinen zu erstellen und auszuführen.
Eines der großartigen Merkmale von Vagrant ist, dass Benutzer niemals an eine bestimmte Virtualisierungsplattform gebunden sind. Die Benutzer können Workflows erstellen, die mit mehreren Virtualisierungsanbietern funktionieren.
Derzeit unterstützt Vagrant mehr als 30 Anbieter. Die vollständige Liste der unterstützten Anbieter können Sie hier einsehen .
1. Installieren Sie KVM unter Linux
Zuerst müssen Sie KVM auf Ihrem Linux-System installieren. Wir haben bereits KVM-Installationsschritte für DEB-basierte Systeme und RPM-basierte Systeme dokumentiert. Folgen Sie einfach den Links, um KVM auf Ihrer bevorzugten Linux-Distribution zu installieren.
- KVM in CentOS 8 Server installieren und konfigurieren
- KVM in Ubuntu 20.04 Headless Server installieren und konfigurieren
- KVM in OpenSUSE Tumbleweed installieren und konfigurieren
2. Installieren Sie das vagrant-libvirt-Plugin unter Linux
Um virtuelle Vagrant-Maschinen auf KVM auszuführen, müssen Sie vagrant-libvirt
installieren Plugin. Dieses Plugin fügt den Libvirt-Anbieter zu Vagrant hinzu und ermöglicht es Vagrant, Maschinen über Libvirt zu steuern und bereitzustellen.
Installieren Sie die erforderlichen Abhängigkeiten für vagrant-libvirt
Plugin.
Unter 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
Unter CentOS, Fedora:
$ sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel
Installieren Sie jetzt vagrant-libvirt
Plugin mit dem Befehl:
$ vagrant plugin install vagrant-libvirt
Außerdem müssen Sie vagrant-mutate
installieren Plugin, das Vagrant-Boxen konvertiert, damit sie mit verschiedenen Anbietern funktionieren.
$ vagrant plugin install vagrant-mutate
3. Verwenden Sie Vagrant mit dem Libvirt KVM-Anbieter
3.1. Stellen Sie sicher, dass die Vagrant-Box, die Sie verwenden möchten, den libvirt-Anbieter unterstützt. Um vagabundierende Boxen zu entdecken, die von libvirt unterstützt werden, wählen Sie einfach "libvirt" aus Option im Vagrant Cloud-Repository.
Für die Zwecke dieses Leitfadens werde ich eine CentOS 7-Box verwenden.
3.2. Gehen Sie zu Ihrem Vagrant-Projektverzeichnis und initialisieren Sie die Vagrant-Umgebung:
$ vagrant init centos/7
3.3. Führen Sie als Nächstes den folgenden Befehl aus, um die virtuelle Maschine zu starten:
$ vagrant up --provider=libvirt
Hier --provider=libvirt
Option weist Vagrant ausdrücklich an, libvirt KVM zu verwenden, um die virtuelle Maschine auszuführen. Bedeutung - KVM fungiert hier als Standardanbieter.
Beispielausgabe:
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
Wie Sie in der ersten Zeile der obigen Ausgabe sehen können, verwendet Vagrant den Provider „libvirt“, um die CentOS 7-VM zu starten.
3.4. Alternativ können Sie Vagrant anweisen, libvirt dauerhaft als Standardanbieter zu verwenden, indem Sie die folgende Umgebungsvariable hinzufügen.
export VAGRANT_DEFAULT_PROVIDER=libvirt
4. Überprüfen Sie, ob die VM in Libvirt KVM ausgeführt wird
4.1. Sie können überprüfen, ob die CentOS 7-VM wirklich im Libvirt-KVM-Anbieter von Virsh ausgeführt wird Befehlszeilenschnittstelle.
$ virsh list
Beispielausgabe:
Id Name State ------------------------------------ 2 myvagrants_default running
Oder verwenden Sie vagrant status
Befehl:
$ vagrant status
4.2. Sie können es auch von einer KVM-Verwaltungs-GUI-Anwendung wie Virt-manager aus überprüfen .
5. Fehlerbehebung
Wenn eine andere Vagrant-Box bereits einen anderen Anbieter verwendet (z. B. virtualbox), erhalten Sie beim Versuch, die neue VM zu starten, folgende Fehlermeldung:
$ 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
Wie in der obigen Ausgabe angegeben, kann Vagrant eine VM jeweils nur mit einem einzigen Anbieter ausführen. Diese Einschränkung könnte in der zukünftigen Version behoben werden.
Bevor Sie eine andere VM mit einem anderen Anbieter ausführen, löschen Sie zuerst die vorhandene aktive Maschine mit dem Befehl:
$ vagrant destroy
Geben Sie "y" ein und drücken Sie die EINGABETASTE, um die standardmäßig aktive Maschine zu löschen:
default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives...
Starten Sie nun die VM mit neuem Anbieter, in diesem Fall also KVM:
$ vagrant up --provider libvirt
6. Fazit
In diesem Handbuch haben wir gelernt, wie man Vagrant mit dem KVM-Anbieter libvirt unter Linux verwendet. Wir haben uns auch angesehen, wie überprüft werden kann, ob die virtuelle Maschine in Libvirt KVM läuft.