如何在Libvirt KVM提供程序中使用Vagrant
Vagrant不是独立的虚拟化提供商。
它依赖于其他虚拟化提供程序(例如Virtualbox,KVM,Docker,VMWare)来创建和运行虚拟机。
Vagrant的一大特色是用户永远不会绑定到特定的虚拟化平台。
用户可以创建可与多个虚拟化提供程序一起使用的工作流。
目前,Vagrant支持30多家提供商。
我们可以在此处查看受支持提供商的完整列表。
默认情况下,Vagrant使用Oracle VirtualBox作为提供程序。
除非我们明确提供特定的提供程序,否则它将始终使用Virtualbox启动VM。
在这个简短的教程中,我将解释如何在Linux上的Libvirt KVM提供程序中使用Vagrant。
在Linux上安装KVM
首先,我们需要在Linux系统上安装KVM。
我们已经记录了基于DEB的系统和基于RPM的系统的KVM安装步骤。
只需单击链接,即可在首选的Linux发行版上安装KVM。
- 在CentOS 8服务器中安装和配置KVM
- 在Ubuntu 20.04 Headless Server中安装和配置KVM
安装vagrant-libvirt插件
为了在KVM上运行Vagrant虚拟机,我们需要安装vagrant-libvirt插件。
该插件将Libvirt提供程序添加到Vagrant,并允许Vagrant通过Libvirt控制和配置计算机。
为vagrant-libvirt插件安装必要的依赖项。
在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
在CentOS上,Fedora:
$sudo dnf install gcc libvirt libvirt-devel libxml2-devel make ruby-devel
现在,使用以下命令安装vagrant-libvirt插件:
$vagrant plugin install vagrant-libvirt
我们还需要安装vagrant-mutate插件,该插件可将vagrant box转换为可与其他提供程序一起使用。
$vagrant plugin install vagrant-mutate
将Vagrant与Libvirt KVM提供程序一起使用
确保要使用的Vagrant框支持libvirt提供程序。
要发现libvirt支持的无用信息框,只需在Vagrant Cloud存储库中选择“ libvirt”选项。
出于本教程的目的,我将使用CentOS 7盒。
转到Vagrant项目目录并初始化Vagrant环境:
$vagrant init centos/7
接下来,运行以下命令以启动虚拟机:
$vagrant up --provider=libvirt
其中“-provider = libvirt”选项明确告知Vagrant使用libvirt KVM运行虚拟机。
含义KVM在这里充当默认提供程序。
输出示例:
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
如我们在上述输出的第一行中所见,Vagrant使用“ libvirt”提供程序来启动CentOS 7 VM。
另外,我们可以通过添加以下环境变量来告诉Vagrant将libvirt永久用作默认提供程序。
export VAGRANT_DEFAULT_PROVIDER=libvirt
验证VM是否在Libvirt KVM中运行
我们可以从Virsh命令行界面验证CentOS 7 VM是否确实在Libvirt KVM提供程序中运行。
$virsh list
输出示例:
Id Name State ----------------------------------- 2 myvagrants_default running
我们也可以从KVM管理GUI应用程序(例如Virt-manager)中进行验证。