GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie Vagrant mit dem Libvirt KVM-Anbieter

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.


Linux
  1. Wie ich Vagrant mit libvirt verwende

  2. Verwendung des ethtool-Befehls mit Beispielen

  3. So verwenden Sie den Export mit Python unter Linux

  4. So verwenden Sie Shared Memory mit Linux in C

  5. Wie verwende ich Regex mit dem Find-Befehl?

So ändern Sie den Standardspeicherort von KVM Libvirt

So verwenden Sie PostgreSQL mit der Ruby On Rails-Anwendung

So arbeiten Sie mit Ansible Provisioner in Vagrant

So verwenden Sie einen SSH-Schlüssel mit Nicht-Root-Benutzern

Verwendung des Shutdown-Befehls mit Beispielen

So verwenden Sie Let’s Encrypt mit Cloudflare