更新时间:2023-01-16 09:42:02浏览次数:559+次
本文介绍如何在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
返回的信息如下图所示:
要启动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。
相关资讯