Secara default, Vagrant menggunakan Oracle VirtualBox sebagai penyedia. Jika lebih dari satu penyedia diinstal (Misalnya Virtualbox dan Libvirt) di sistem Anda, itu akan selalu memulai VM dengan Virtualbox kecuali Anda secara eksplisit menyediakan penyedia tertentu. Dalam panduan singkat ini, mari kita lihat cara menggunakan Vagrant dengan penyedia Libvirt KVM di Linux.
Gelang bukan penyedia virtualisasi yang berdiri sendiri. Itu bergantung pada penyedia virtualisasi lain seperti Virtualbox, Libvirt/KVM, Docker, VMWare untuk membuat dan menjalankan mesin virtual.
Salah satu fitur hebat Vagrant adalah pengguna tidak pernah terikat pada platform virtualisasi tertentu. Pengguna dapat membuat alur kerja yang bekerja dengan beberapa penyedia virtualisasi.
Saat ini, Vagrant mendukung lebih dari 30 penyedia. Anda dapat melihat daftar lengkap penyedia yang didukung di sini .
1. Instal KVM di Linux
Pertama, Anda perlu menginstal KVM di sistem Linux Anda. Kami telah mendokumentasikan langkah-langkah instalasi KVM untuk sistem berbasis DEB dan sistem berbasis RPM. Cukup ikuti tautan untuk menginstal KVM pada distribusi Linux pilihan Anda.
- Instal Dan Konfigurasi KVM Di Server CentOS 8
- Instal Dan Konfigurasi KVM Di Server Tanpa Kepala Ubuntu 20.04
- Instal Dan Konfigurasi KVM Di OpenSUSE Tumbleweed
2. Instal plugin vagrant-libvirt di Linux
Untuk menjalankan mesin virtual Vagrant di KVM, Anda perlu menginstal vagrant-libvirt
pengaya. Plugin ini menambahkan penyedia Libvirt ke Vagrant dan memungkinkan Vagrant untuk mengontrol dan menyediakan mesin melalui Libvirt.
Instal dependensi yang diperlukan untuk vagrant-libvirt
pengaya.
Di 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
Di CentOS, Fedora:
$ sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel
Sekarang, instal vagrant-libvirt
plugin menggunakan perintah:
$ vagrant plugin install vagrant-libvirt
Anda juga perlu menginstal vagrant-mutate
plugin yang mengubah kotak gelandangan untuk bekerja dengan penyedia yang berbeda.
$ vagrant plugin install vagrant-mutate
3. Gunakan Vagrant Dengan Penyedia KVM Libvirt
3.1. Pastikan kotak Vagrant yang ingin Anda gunakan mendukung penyedia libvirt. Untuk menemukan kotak gelandangan yang didukung oleh libvirt, cukup pilih "libvirt" pilihan di repositori Vagrant Cloud.

Untuk tujuan panduan ini, saya akan menggunakan kotak CentOS 7.
3.2. Buka direktori proyek Vagrant Anda dan inisialisasi lingkungan Vagrant:
$ vagrant init centos/7
3.3. Selanjutnya, jalankan perintah berikut untuk memulai mesin virtual:
$ vagrant up --provider=libvirt
Di sini, --provider=libvirt
option secara eksplisit memberitahu Vagrant untuk menggunakan libvirt KVM untuk menjalankan mesin virtual. Artinya - KVM bertindak sebagai penyedia default di sini.
Contoh keluaran:
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

Seperti yang Anda lihat di baris pertama dari output di atas, Vagrant menggunakan penyedia "libvirt" untuk meluncurkan VM CentOS 7.
3.4. Atau Anda dapat memberi tahu Vagrant untuk menggunakan libvirt sebagai penyedia default secara permanen dengan menambahkan variabel lingkungan berikut.
export VAGRANT_DEFAULT_PROVIDER=libvirt
4. Verifikasi apakah VM berjalan di Libvirt KVM
4.1. Anda dapat memverifikasi apakah CentOS 7 VM benar-benar berjalan di penyedia KVM Libvirt dari Virsh antarmuka baris perintah.
$ virsh list
Contoh keluaran:
Id Name State ------------------------------------ 2 myvagrants_default running

Atau, gunakan vagrant status
perintah:
$ vagrant status
4.2. Anda juga dapat memverifikasinya dari aplikasi GUI manajemen KVM seperti Manajer Virt .

5. Pemecahan masalah
Jika kotak Vagrant lain sudah menggunakan penyedia yang berbeda (misalnya virtualbox), Anda akan melihat pesan kesalahan berikut saat mencoba memulai VM baru:
$ 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
Seperti yang dinyatakan dalam output di atas, Vagrant dapat menjalankan VM hanya dengan satu penyedia dalam satu waktu. Batasan ini mungkin dapat diselesaikan di versi mendatang.
Sebelum menjalankan VM lain dengan penyedia yang berbeda, hapus terlebih dahulu mesin aktif yang ada menggunakan perintah:
$ vagrant destroy
Ketik "y" dan tekan ENTER untuk menghapus mesin default yang aktif:
default: Are you sure you want to destroy the 'default' VM? [y/N] y ==> default: Destroying VM and associated drives...
Sekarang mulai VM dengan penyedia baru yaitu KVM dalam hal ini:
$ vagrant up --provider libvirt
6. Kesimpulan
Dalam panduan ini, kami belajar cara menggunakan Vagrant dengan penyedia libvirt KVM di Linux. Kami juga melihat cara memverifikasi apakah mesin virtual berjalan di Libvirt KVM.