如何使用Virt-builder快速构建虚拟机镜像?

Virt-builder是一种命令行工具,可轻松快速地构建供本地或云使用的各种虚拟机镜像。它还具有许多自定义图像的方法。您可以在VM镜像上安装新的应用程序,设置主机名,设置root密码,在来宾VM首次启动时运行命令或脚本,在磁盘镜像中添加或编辑文件以及许多其他文件。所有这些任务都可以从命令行完成,并且不需要root权限。
Virt-builder会下载经过精心准备的,经过数字签名的OS模板,因此您不必手动安装OS。您所要做的只是使用Virt-manager GUI或Virt-install命令行工具立即启动具有预定义模板的VM。Virt-builder为流行的Linux和Unix变体提供了最少的OS模板。当然,您也可以创建自己的模板。
一、在Linux上安装Virt-builder
Virt-builder是Libguestfs库的一部分,因此请先在Linux上安装libguestfs。
运行以下命令以在Debian,Ubuntu上安装libguestfs:
$ sudo apt install libguestfs-tools
在CentOS上,RHEL:
$ sudo dnf install libguestfs-tools
安装完成后,使用以下命令检查guestfish的版本:
$ guestfish --version
guestfish 1.40.2
二、使用Virt-builder构建虚拟机镜像
使用Virt-builder构建虚拟机的镜像非常简单直接。
1、列出可用的虚拟机模板
首先,列出可用的操作系统模板。为此,请运行:
$ virt-builder --list
以下是目前可以使用的一些模板:
在这里插入图片描述

如您所见,有多个可用的OS模板。
在构建虚拟机镜像之前,您可以查看客户机OS的安装说明以了解其中的内容。
例如,要查看Debian 10的安装说明,请运行:
$ virt-builder --notes debian-10
2、建立虚拟机镜像
我想将OS模板下载到特定目录中,因此创建了以下目录:
$ mkdir virtbuilder
$ cd virtbuilder/
让我们使用以下命令构建Debian 10虚拟机:
$ virt-builder debian-10
在这里插入图片描述

如您所见,此命令已构建了最小的Debian 10镜像。它不会有任何用户帐户。它只有随机的root密码和最少安装的软件。 镜像的输出名称应与模板名称相同。您可以根据需要使用-o选项更改它: $ virt-builder debian-10 -o a5idc.img 默认情况下,镜像格式为img。您可以将其转换为其他格式,例如Qcow2,如下所示: $ virt-builder debian-10 --format qcow2 默认情况下,Virt-builder将构建与主机OS体系结构相同的镜像。例如,如果您的主机操作系统是64位,则它将构建64位VM。您可以使用–arch选项将此值更改为32位(如果可用)。 $ virt-builder debian-10 --arch i686 是否要构建自定义尺寸的镜像?这也是可能的。让我们使用以下命令构建大小为50 GB的VM: $ virt-builder debian-10 --size 50G 在将客户机操作系统复制到输出时,将使用virt-resize命令自动调整其大小。 3、设置root密码 就像我已经提到的那样,在构建镜像时,将为root用户帐户分配一个随机密码。如果要设置特定的密码,请按以下步骤操作。 $ virt-builder centos-8.2 --format qcow2 --root-password password:centos 上面的命令将构建CentOS 8.2镜像并将root用户的密码分配为“centos”。 您还可以从文本文件设置密码: $ virt-builder centos-8.2 --root-password file:~/a5idc.txt 要禁用root密码,请运行: $ virt-builder centos-8.2 --root-password disabled 锁定根帐户: $ virt-builder centos-8.2 --root-password locked 锁定root帐户并禁用root密码: $ virt-builder centos-8.2 --root-password locked:disabled 要分配root密码但锁定root帐户,请使用以下选项: –root-password locked:file:FILENAME –root-password locked:password:PASSWORD 使用“passwd -u”命令解锁root用户后,我们可以使用root密码。 4、建立使用者 要在构建虚拟机镜像时创建用户帐户,请运行: $ virt-builder centos-8.2 --firstboot-command ‘useradd -m -p “” sk ; chage -d 0 sk’ 上面的命令将创建一个没有密码的名为“sk”的用户,并强制他在首次登录时设置密码。 5、设置主机名 在构建主机名时将其设置为VM,运行: $ virt-builder centos-8.2 --hostname virt.a5idc.local 6、在VM镜像上安装软件 要在虚拟机上安装软件包,请运行: $ virt-builder debian-10 --install vim 要安装多个软件包,请用引号引起来,并用逗号分隔,如下所示: $ virt-builder debian-10 --install “apache2,htop” 更新虚拟机中的所有软件包: $ virt-builder centos-8.2 --update 如果您的VM使用SELinux,则需要在安装或更新软件包后重新标记SELinux: $ virt-builder centos-8.2 --update --selinux-relabel 7、自定义VM镜像 Virt-builder在构建镜像时有许多选项可以自定义镜像。例如,您可以在VM首次启动时运行特定的命令/脚本: $ virt-builder debian-10 --firstboot-command ‘apt -y update’ 添加一行: $ virt-builder centos-8.2 --append-line ‘/etc/hosts:192.168.225.1 server.a5idc.local’ 8、缓存模板 默认情况下,所有模板都将首次下载网络。由于模板很大,因此下载的模板将被缓存在用户的主目录中。 您可以使用以下命令打印缓存目录的详细信息以及当前缓存的模板: $ virt-builder --print-cache 您可以通过手动查看缓存文件夹来验证它: $ ls $HOME/.cache/virt-builder centos-8.2.x86_64.1 debian-10.x86_64.1 您可以使用以下命令将所有可用模板下载到本地缓存文件夹中: $ virt-builder --cache-all-templates 如果您不想在构建镜像时缓存模板,请使用–no-cache选项。 要删除所有缓存的模板,请运行: $ virt-builder --delete-cache [ 0.0] Deleting: /home/sk/.cache/virt-builder 9、将磁盘镜像导入虚拟机监控程序 好了,您已经下载了所需的操作系统并根据自己的喜好对其进行了自定义。怎么办?让我们导入镜像,并使用新创建的带有虚拟机管理程序的磁盘镜像运行VM。 Virt-builder具有数百个命令和选项。我在这里介绍了所有基本命令。有关更多详细信息,请参见使用手册。 $ man virt-builder A5互联https://www.a5idc.net/