如何在Libvirt KVM提供程序中使用Vagrant

时间:2020-03-21 11:45:05  来源:igfitidea点击:

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)中进行验证。