GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare Vagrant con il provider KVM Libvirt

Per impostazione predefinita, Vagrant utilizza Oracle VirtualBox come provider. Se sono installati più provider (ad es. Virtualbox e Libvirt) nel tuo sistema, avvierà sempre una VM con Virtualbox a meno che tu non fornisca esplicitamente un provider specifico. In questa breve guida, vediamo come utilizzare Vagrant con il provider KVM Libvirt su Linux.

Vagabondo non è un provider di virtualizzazione autonomo. Si basa su altri provider di virtualizzazione come Virtualbox, Libvirt/KVM, Docker, VMWare per creare ed eseguire macchine virtuali.

Una delle grandi caratteristiche di Vagrant è che gli utenti non sono mai legati a una specifica piattaforma di virtualizzazione. Gli utenti possono creare flussi di lavoro che funzionano con più provider di virtualizzazione.

Attualmente, Vagrant supporta più di 30 provider. Puoi visualizzare l'elenco completo dei provider supportati qui .

1. Installa KVM su Linux

Innanzitutto, devi installare KVM sul tuo sistema Linux. Abbiamo già documentato i passaggi di installazione di KVM per sistemi basati su DEB e sistemi basati su RPM. Segui i link per installare KVM sulla tua distribuzione Linux preferita.

  • Installa e configura KVM nel server CentOS 8
  • Installa e configura KVM in Ubuntu 20.04 Headless Server
  • Installa e configura KVM in OpenSUSE Tumbleweed

2. Installa il plugin vagrant-libvirt in Linux

Per eseguire le macchine virtuali Vagrant su KVM, è necessario installare il vagrant-libvirt collegare. Questo plugin aggiunge il provider Libvirt a Vagrant e consente a Vagrant di controllare e fornire macchine tramite Libvirt.

Installa le dipendenze necessarie per vagrant-libvirt plug-in.

Su 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

Su CentOS, Fedora:

$ sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel

Ora installa vagrant-libvirt plugin usando il comando:

$ vagrant plugin install vagrant-libvirt

Devi anche installare vagrant-mutate plug-in che converte le caselle vagabonde per funzionare con diversi fornitori.

$ vagrant plugin install vagrant-mutate

3. Usa Vagrant con il provider KVM Libvirt

3.1. Assicurati che la casella Vagrant che desideri utilizzare supporti il ​​provider libvirt. Per scoprire caselle vagabonde supportate da libvirt, seleziona "libvirt" opzione nel repository Vagrant Cloud.

Ai fini di questa guida, utilizzerò una scatola CentOS 7.

3.2. Vai alla directory del tuo progetto Vagrant e inizializza l'ambiente Vagrant:

$ vagrant init centos/7

3.3. Quindi, esegui il comando seguente per avviare la macchina virtuale:

$ vagrant up --provider=libvirt

Qui, --provider=libvirt opzione dice esplicitamente a Vagrant di usare libvirt KVM per eseguire la macchina virtuale. Significato:qui KVM funge da provider predefinito.

Risultato di esempio:

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

Come puoi vedere nella prima riga dell'output sopra, Vagrant utilizza il provider "libvirt" per avviare CentOS 7 VM.

3.4. In alternativa, puoi dire a Vagrant di utilizzare permanentemente libvirt come provider predefinito aggiungendo la seguente variabile di ambiente.

export VAGRANT_DEFAULT_PROVIDER=libvirt

4. Verifica se la VM è in esecuzione in Libvirt KVM

4.1. Puoi verificare se la VM CentOS 7 è realmente in esecuzione nel provider KVM Libvirt da Virsh interfaccia a riga di comando.

$ virsh list

Risultato di esempio:

 Id   Name                 State
------------------------------------
 2    myvagrants_default   running

Oppure usa vagrant status comando:

$ vagrant status

4.2. Puoi anche verificarlo da un'applicazione GUI di gestione KVM come Virt-manager .

5. Risoluzione dei problemi

Se un altro Vagrant box sta già utilizzando un provider diverso (ad es. virtualbox), quando proverai ad avviare la nuova VM vedrai il seguente messaggio di errore:

$ 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

Come indicato nell'output sopra, Vagrant può eseguire una VM con un solo provider alla volta. Questa limitazione potrebbe essere risolta nella versione futura.

Prima di eseguire un'altra VM con provider diverso, elimina prima la macchina attiva esistente utilizzando il comando:

$ vagrant destroy 

Digita "y" e premi INVIO per eliminare la macchina attiva predefinita:

    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...

Ora avvia la VM con un nuovo provider, ad esempio KVM in questo caso:

$ vagrant up --provider libvirt

6. Conclusione

In questa guida, abbiamo imparato come utilizzare Vagrant con il provider KVM libvirt in Linux. Abbiamo anche esaminato come verificare se la macchina virtuale è in esecuzione in Libvirt KVM.


Linux
  1. Come uso Vagrant con libvirt

  2. Come utilizzare il comando ethtool con esempi

  3. Come utilizzare la memoria condivisa con Linux in C

  4. Come usare regex con il comando find?

  5. come usare pip python2.7 invece di pip predefinito

Come modificare la posizione dello storage pool predefinito di KVM Libvirt

Come utilizzare PostgreSQL con l'applicazione Ruby On Rails

Come lavorare con Ansible Provisioner in Vagrant

Come utilizzare una chiave SSH con utenti non root

Come usare il comando di spegnimento con esempi

Come utilizzare Let's Encrypt con Cloudflare