Rocky Linux 8/AlmaLinux 8上用Vagrant和Libvirt KVM

本文介绍如何在Rocky Linux 8/AlmaLinux 8系统上使用Vagrant和Libvirt KVM,包括安装配置方法。在没开始之前,请运行sudo dnf -y update && sudo reboot命令进行系统更新和升级。

具体操作方法

1、在Rocky Linux 8/AlmaLinux 8上安装KVM

本文的核心依赖项是KVM虚拟机监控程序。您的系统应该具有虚拟化扩展(Intel VT或AMD-V),以便本文在您的应用程序中获得成功。

登录Rocky Linux 8/AlmaLinux 8并安装KVM虚拟化堆栈工具:

sudo dnf install -y bash-completion vim @virt virt-install libvirt-devel

安装后,启动libvirtd服务:

sudo systemctl start libvirtd

还将服务设置为在系统重新启动时自动启动:

sudo systemctl enable libvirtd

要管理没有sudo权限的虚拟机,请将您的用户帐户添加到libvirt组:

sudo usermod -aG libvirt $USER

newgrp libvirt

确认服务状态:

$ systemctl status libvirtd

2、在Rocky Linux 8/AlmaLinux 8上安装Vagrant

Vagrant包以二进制形式分布在YUM存储库中。让我们将HashiCorp存储库添加到我们的系统中:

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

sudo yum install vagrant -y

出现提示时,按y键开始安装。

3、在Rocky Linux 8/AlmaLinux 8上安装Libvirt Vagrant插件

安装此步骤中需要的依赖程序包:

sudo dnf groupinstall "Development Tools" -y 

sudo dnf -y install rsync zlib-devel libvirt-devel cmake libxslt-devel libxml2-devel libvirt-devel libguestfs-tools-c ruby ruby-devel

以下为更新Vagrant库内容。因为在选写和验证本文时,系统库与Vagrant嵌入的库之间存在兼容性问题。我们必须重建Vagrant库,如果后期修复了,就不必进行以下相应的操作。

确保安装了所需的依赖项:

sudo dnf -y install libxslt-devel libxml2-devel libvirt-devel libguestfs-tools-c ruby-devel gcc byacc make cmake gcc-c++

创建用于生成的目录:

mkdir -p ~/vagrant-build && cd ~/vagrant-build

在本地下载krb5和libssh包:

dnf download --source krb5-libs libssh

构建并重写krb5库:

rpm2cpio krb5-*.src.rpm | cpio -idmv krb5-*.tar.gz

tar xzf krb5-*.tar.gz

pushd krb5-*/src

./configure

make

sudo cp -a lib/crypto/libk5crypto.so.3* /opt/vagrant/embedded/lib64/

popd

构建和重写libssh库:

rpm2cpio libssh-*.src.rpm | cpio -imdv  libssh-*.tar.xz

tar xJf libssh-*.tar.xz

mkdir build

pushd build

cmake ../libssh-*  -DOPENSSL_ROOT_DIR=/opt/vagrant/embedded

make

sudo cp lib/libssh* /opt/vagrant/embedded/lib64/

popd

随着库的更新,我们现在可以为Vagrant安装Libvirt插件:

$ vagrant plugin install vagrant-libvirt

Installing the 'vagrant-libvirt' plugin. This can take a few minutes...

Fetching formatador-1.1.0.gem

Fetching fog-core-2.3.0.gem

Fetching fog-json-1.2.0.gem

Fetching nokogiri-1.13.8-x86_64-linux.gem

Fetching fog-xml-0.1.4.gem

Fetching ruby-libvirt-0.8.0.gem

Building native extensions. This could take a while...

Fetching fog-libvirt-0.9.0.gem

Fetching xml-simple-1.1.9.gem

Fetching diffy-3.4.2.gem

Fetching vagrant-libvirt-0.10.8.gem

Installed the plugin 'vagrant-libvirt (0.10.8)'!

安装后列出可用的Vagrant插件:

$ vagrant plugin list

vagrant-libvirt (0.10.8, global)

要启用游移命令的自动完成,请运行:

$ vagrant autocomplete install

Autocomplete installed at paths:

-

- /home/jkmutai/.bashrc

然后source~/.bashrc文件:

source ~/.bashrc

4、添加Libvirt Vagrant Boxes

Boxes是Vagrant环境的包格式。在Vagrant支持的任何平台上,任何人都可以使用一个盒子来创建一个相同的工作环境。

要使用我们刚刚安装的提供程序,我们需要为Libvirt提供程序构建的Vagrant boxes。您可以浏览Vagrant Cloud中所有可用的框来找到您的匹配项,地址在https://app.vagrantup.com/boxes/search。

您不能同时运行VirtualBox和KVM服务。如果您还让VirtualBox停止其服务:

systemctl stop vboxdrv.service

vagrant box实用程序提供了管理boxes的所有功能。我们可以下载几个boxes进行测试:

### Rocky Linux 8 ###

vagrant box add generic/rocky8 --provider=libvirt

### Rocky Linux 9 ###

vagrant box add generic/rocky9 --provider=libvirt

### AlmaLinux 8 ###

vagrant box add generic/alma8 --provider=libvirt

### Add Ubuntu 22.04 box ###

vagrant box add generic/ubuntu2204 --provider=libvirt

### Add Debian 11 ###

vagrant box add generic/debian11 --provider=libvirt

您可以使用以下命令获取所有可用Vagrant boxes的列表:

$ vagrant box list

generic/rocky8 (libvirt, 4.1.12)

5、在KVM上创建Vagrant机器

Vagrantfile描述了项目所需的机器类型,以及如何配置和配置这些机器。考虑以下简单的Vagrantfile,您可以使用它来旋转Vagrant机器:

vim Vagrantfile

有以下内容:

# -*- mode: ruby -*-

# vi: set ft=ruby :

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'

Vagrant.configure("2") do |config|

  ##### DEFINE VM #####

  config.vm.define "rocky8" do |config|

  config.vm.hostname = "rocky8"

  config.vm.box = "generic/rocky8"

  config.vm.box_check_update = false

  config.vm.provider :libvirt do |v|

    v.memory = 1024

    end

  end

end

要启动机器,请运行以下命令:

$ vagrant up

返回的信息如下图所示:

Rocky Linux 8/AlmaLinux 8上用Vagrant和Libvirt KVM

要启动SSH shell,请运行:

$ vagrant ssh

[vagrant@rocky8 ~]$ cat /etc/redhat-release

[vagrant@cent8 ~]$ cat /etc/redhat-release

Rocky Linux release 8.6 (Green Obsidian)

您可以以任何操作系统的方式与机器交互:

#示例:执行软件包升级

sudo dnf -y update

若要在服务器运行时停止,请使用“vagrant halt”命令:

$ vagrant halt

default: Attempting graceful shutdown of VM...

要注销虚拟机,请运行:

$ vagrant destroy

default: Are you sure you want to destroy the 'default' VM? [y/N] y

default: Destroying VM and associated drives...

default: Destroying unused networking interface...

所有可用的Vagrant命令选项包括:

vagrant --help

vagrant -h

同时,您还可以通过阅读官方Vagrant文档了解更多信息,地址在https://www.vagrantup.com/docs。

栏目相关文章