在CentOS 8上将Vagrant与Libvirt KVM一起使用

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

基于内核的虚拟机(KVM)是一种开源虚拟化技术,用于大规模虚拟化和云项目,例如OpenStack,CloudStack和oVirt。它内置于Linux中,可将Linux服务器转变为运行多个虚拟机(VM)的管理程序。本指南旨在帮助新用户使用CentOS 8的Vagrant和KVM虚拟机管理程序启动和管理虚拟机生命周期。

如果您不熟悉vagrant,则它是由创建的开源工具。 哈希公司 它使开发人员能够在任何虚拟化平台(KVM,Virtualbox,VMware,Parallels甚至Docker容器)上构建和维护便携式软件开发环境。本指南的主要要求是正在运行的CentOS 8服务器或工作站。如果您有Fedora工作站,本指南也将提供帮助。

早些时候,我写了另一篇关于在其他Linux发行版上将Livivirt与KVM一起使用的文章,但这也适用于CentOS 8。如本指南中所述,在CentOS 8上进行安装还需要一些其他依赖项。

步骤1:在CentOS 8上安装KVM

必须先安装KVM虚拟化软件堆栈,然后才能安装Vagrant插件并在安装中使用它。在开始安装之前,请确保所有系统软件包(包括内核)都已更新为最新版本。

sudo dnf -y update

更新完成后,重新启动系统。

sudo systemctl reboot

等待系统重启,然后在CentOS 8 Linux机器上安装KVM虚拟化工具。

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

启动并启用libvirtd服务。

sudo systemctl enable --now libvirtd

将用户添加到libvirt组

sudo usermod -aG libvirt $USER
newgrp libvirt

步骤2:在CentOS 8上安装Vagrant

下一个软件组件是Vagrant。此处使用的某些依赖项是可通过以下dnf命令轻松安装的构建工具。

sudo dnf groupinstall "Development Tools" -y 
sudo dnf -y install rsync gcc zlib-devel libvirt-devel

安装使用Vagrant所需的Ruby和Ruby开发包。

sudo dnf install -y ruby ruby-devel

下载并安装最新版本的Vagrant。

VERSION="2.2.9"
wget https://releases.hashicorp.com/vagrant/${VERSION}/vagrant_${VERSION}_x86_64.rpm
sudo dnf localinstall vagrant_${VERSION}_x86_64.rpm

击中 ÿ 开始安装的关键:

Dependencies resolved.
================================================================================
 Package         Architecture   Version              Repository            Size
================================================================================
Installing:
 vagrant         x86_64         1:2.2.9-1            @commandline          42 M

Transaction Summary
================================================================================
Install  1 Package

Total size: 42 M
Installed size: 122 M
Is this ok [y/N]: y

步骤3:为Libvirt安装Vagrant插件

安装KVM,Vagrant和所需的工具后,您可以安装KVM Vagrant插件。这允许您从特定于CentOS 8台式机或服务器的Libvirt提供程序的映像中旋转虚拟机。

$ CONFIGURE_ARGS="with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64" vagrant plugin install vagrant-libvirt

Installing the 'vagrant-libvirt' plugin. This can take a few minutes...
Building native extensions. This could take a while...
Building native extensions. This could take a while...
Fetching fog-libvirt-0.7.0.gem
Fetching vagrant-libvirt-0.1.2.gem
Installed the plugin 'vagrant-libvirt (0.1.2)'!

如果由于这种依赖性导致安装失败,请使用gem命令安装nokogiri库。

$ gem install nokogiri
Fetching: nokogiri-1.10.10.gem (100%)
Building native extensions. This could take a while...
Successfully installed nokogiri-1.10.10
Parsing documentation for nokogiri-1.10.10
Installing ri documentation for nokogiri-1.10.10
Done installing documentation for nokogiri after 2 seconds
1 gem installed

确认安装成功。您可以在评论部分中分享遇到的任何错误。然后查看如何提供帮助。

步骤4:添加Libvirt Vagrant Boxs

流浪者环境软件包格式。 Vagrant支持的任何平台上的任何人都可以使用Box,以实现相同的工作环境。

要使用已安装的提供程序,您需要为Libvirt提供程序构建一个Vagrant框。您可以在以下位置浏览所有可用的框 流浪云 找到你的对手。

在我的用例中,我需要一些可以用创建的Vagrant Box实用程序拉出的盒子,以提供管理盒子的所有功能。

--- Add CentOS 8 box ---
$ vagrant box add centos/8 --provider=libvirt

--- Add CentOS 7 box ---
$ vagrant box add centos/7 --provider=libvirt

--- Add Ubuntu 20.04 box ---
$ vagrant box add generic/ubuntu2004 --provider=libvirt

--- Add Ubuntu 18.04 box ---
$ vagrant box add generic/ubuntu1804 --provider=libvirt

--- Add Fedora 32 box ---
$ vagrant box add generic/fedora32 --provider=libvirt

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

$ vagrant box list
centos/7           (libvirt, 2004.01)
centos/8           (libvirt, 1905.1)
generic/ubuntu2004 (libvirt, 3.0.20)

在CentOS 8上使用Vagrant和Libvirt运行虚拟机

Vagrantfile描述了项目所需的计算机类型以及如何配置和配置这些计算机。

创建一个可用于执行的简单Vagrantfile。

$ vim Vagrantfile

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

$ vagrant up

预期产量:

Bringing machine 'default' up with 'libvirt' provider...
==> default: Registering VM image from the base box 'centos/8'...
==> default: Creating new virtual machine as a linked clone of the box image...
==> default: Unregistering the box VM image...
==> default: Setting the default configuration for VM...
==> default: Setting the name of the VM: cent8
==> default: Preparing network interfaces based on configuration...
    default: Adapter 0: shared
==> default: Clearing any previously set network interfaces...
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 192.168.122.20:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    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: Machine booted and ready!
==> default: Mounting shared folders...
    default: /vagrant => /Users/jmutai/vagrant/cent8

要启动SSH Shell,请运行以下命令:

$ vagrant ssh

This system is built by the Bento project by Chef Software
More information can be found at https://github.com/chef/bento
Last login: Fri Aug  7 00:29:28 2020

[[email protected] ~]$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[[email protected] ~]$ exit
logout

要在服务器运行时停止服务器,请使用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命令选项为:

--version      -- Prints the Vagrant version information
box            -- Box commands
connect        -- Connects to a shared, remote Vagrant environment
destroy        -- Destroys the vagrant environment
docker-logs    -- Shows Docker logs
docker-run     -- Run one-off commands against a Docker container
global-status  -- Reports the status of all active Vagrant environments on the system
halt           -- Halts the currently running vagrant environment
help           -- [TASK] Describe available tasks or one specific task
init           -- [box_name] [box_url] Initializes current folder for Vagrant usage
list-commands  -- Outputs all available Vagrant subcommands
login          -- Authenticates against a Vagrant Cloud server to access protected boxes
package        -- Packages a vagrant environment for distribution
plugin         -- Manage plugins
provision      -- Run the provisioner
push           -- Deploys code in this environment to a configured destination
rdp            -- Connects to machine via RDP
reload         -- Reload the vagrant environment
resume         -- Resumes a suspend vagrant environment
rsync          -- Syncs rsync synced folders to remote machine
rsync-auto     -- Syncs rsync synced folders automatically when files change
share          -- Shares the Vagrant environment and allows remote access
ssh            -- SSH into the currently running environment
ssh-config     -- Outputs .ssh/config valid syntax for connecting to this environment via ssh
status         -- Shows the status of the current Vagrant environment
suspend        -- Suspends the currently running vagrant environment
up             -- Creates the vagrant environment
version        -- Prints the currently installed Vagrant version and checks for new updates

您可以阅读官方资料并了解更多信息 流浪文件..

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

以PDF格式下载指南


这是续集。

这是续集。
这是续集。

Sidebar