在Vmware上调配Fedora CoreOS

本指南介绍如何在Vmware管理程序上配置新的Fedora CoreOS(FCOS)节点。

Fedora CoreOS支持VMware ESXi≥6.5、VMware Workstation≥16和VMware Fusion≥12。 修改OVF的元数据 可以在较旧的VMware产品上运行,但不能保证兼容性和可支持性。

先决条件

在配置FCOS计算机之前,您必须具有包含自定义设置的Ignition配置文件。如果您没有,请参见 生成Ignition文件

您还需要访问正常运行的VMware基础架构,以支持至少具有硬件版本13的VM。 下面的示例使用 政府 用于远程vSphere资源调配的命令行工具 OvfTool 用于本地工作站或Fusion配置。

下载OVA

Fedora CoreOS被设计为自动更新,每个流有不同的时间表。 一旦选择了相关的流,您就可以下载最新的OVA:

STREAM="stable"
coreos-installer download -s "${STREAM}" -p vmware -f ova

或者,OVA图像可以从 下载页面

编码Ignition配置

对于 vmware 提供程序,Ignition要求在首次启动VM时出现两个“GuestInfo”字段:

  • guestinfo.ignition.config.data.encoding :Ignition配置的编码。

  • guestinfo.ignition.config.data :Ignition配置的内容,按上述格式编码。

为了获得最大的兼容性,建议使用 base64 编码并准备Ignition配置,如下所示:

CONFIG_ENCODING='base64'
CONFIG_ENCODED=$(cat example.ign | base64 -w0 -)

平原之外的另一种选择 base64 编码是 gzip+base64 如中所述 支持Ignition的平台 。这在通过以下方式提交Ignition配置时特别有用 govc 作为_inline_参数。在这种情况下,Linux上的编码配置限制为略低于128 KiB,MacOS上为256 KiB,Windows上为32 KiB(如果使用 cmd.exe 或PowerShell)。如果您的配置大于该限制,则可以在使用以下命令压缩后以内联方式提交 gzip

CONFIG_ENCODING='gzip+base64'
CONFIG_ENCODED=$(cat example.ign | gzip -9 | base64 -w0 -)

在工作站或Fusion上引导新的虚拟机

本节介绍如何使用Workstation和Fusion工具从命令行配置和运行VM。一些步骤也可能通过图形用户界面执行。

导入OVA

下载的OVA必须在本地导入到工作站或Fusion库中。同时,必须提供Ignition,才能将其应用于VM。

VM_NAME='fcos-node01'
FCOS_OVA='./ova-templates/fedora-coreos-31.20200210.3.0-vmware.x86_64.ova'
LIBRARY="$HOME/Virtual Machines.localized"
ovftool \
  --powerOffTarget \
  --name="${VM_NAME}" \
  --allowExtraConfig \
  --extraConfig:guestinfo.ignition.config.data.encoding="${CONFIG_ENCODING}" \
  --extraConfig:guestinfo.ignition.config.data="${CONFIG_ENCODED}" \
  "${FCOS_OVA}" "${LIBRARY}"

之后,您可以刷新工作站或Fusion用户界面中的虚拟机列表以及新的 fcos-node01 VM应显示为已准备好启动。它的硬件配置可以在这一点上进一步定制,然后通电。

在vSphere上启动新的虚拟机

本节介绍如何使用vSphere工具从命令行配置和运行VM。类似的步骤也可以通过图形用户界面执行。

导入OVA

下载的OVA必须首先导入到vSphere库中:

FCOS_OVA='./ova-templates/fedora-coreos-31.20200210.3.0-vmware.x86_64.ova'
LIBRARY='fcos-images'
TEMPLATE_NAME='fcos-31.20200210.3.0'
govc session.login -u 'user:password@host'
govc library.create "${LIBRARY}"
govc library.import -n "${TEMPLATE_NAME}" "${LIBRARY}" "${FCOS_OVA}"

设置新的虚拟机

现在,您可以从库中的模板和编码的Ignition配置开始部署新的VM:

VM_NAME='fcos-node01'
govc library.deploy "${LIBRARY}/${TEMPLATE_NAME}" "${VM_NAME}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data=${CONFIG_ENCODED}"

一种新的 fcos-node01 现在可以启动VM了。此时可以进一步定制其硬件配置,然后通电:

govc vm.info -e "${VM_NAME}"
govc vm.power -on "${VM_NAME}"

首次启动网络和Ignition

IGNING支持在配置中引用远程内容,并在配置时获取它。 因此,在第一次引导时,FCOS实例会尝试通过DHCP执行网络自动配置。

如果您的VMware设置使用静态网络配置,则可以使用您自己的自定义配置覆盖此自动DHCP设置。 自定义网络命令行 ip= 在第一次启动VM之前,可以通过如下所示的guestinfo属性配置参数。

资源调配流程遵循通常的步骤,外加一个 guestinfo.afterburn.initrd.network-kargs 进入。

如果您使用的置备方法不是 govc ,请确保已在虚拟机的高级配置参数(也称为 ExtraConfig )。某些管理工具可能会默认使用vApp属性,这在此方案中不起作用。
VM_NAME='fcos-node02'
IFACE='ens192'
IPCFG="ip=192.0.2.42::192.0.2.1:255.255.255.0:${VM_NAME}:${IFACE}:off"

govc library.deploy "${LIBRARY}/${TEMPLATE_NAME}" "${VM_NAME}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data=${CONFIG_ENCODED}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
govc vm.info -e "${VM_NAME}"
govc vm.power -on "${VM_NAME}"

的完整语法。 ip= 参数记录在中 德拉库特手册页

有关首次启动网络的更多信息,请参见 续烧文档

排除首次启动问题

您可能会遇到需要访问首次启动期间出现的系统日志的Ignition配置问题。要制作系统日志的副本,您可以在引导前将一个串行设备连接到VM。VSphere以及Workstation和Fusion允许这样做,并会将输出保存到您选择的文件中。

要连接串行设备,只需修改关闭的虚拟机的硬件设置并添加 Serial Port 。选择要创建的文件的目标和名称。然后打开该VM的电源。遇到错误时,请检查您最初指定的文件-它应该包含系统日志的副本。

还可以通过将串行设备添加到虚拟机 govc 如中所述 官方使用文档

VM_NAME='fcos-node01'

govc device.serial.add -vm "${VM_NAME}"
govc device.serial.connect -vm "${VM_NAME}" "[datastore] ${VM_NAME}/console.log"

修改OVF元数据

虽然我们提供了这些修改OVF元数据的说明,但我们不能 保证对OVF元数据的任何修改都将产生可用的 来宾VM。

Fedora CoreOS旨在运行在 普遍支持 发布VMware ESXi、 VMware Workstation和VMware Fusion。因此,Fedora CoreOS Vmware OVA图像指定了一个 虚拟硬件版本 这可能与旧的、不受支持的VMware产品不兼容。 但是,您可以修改图像的OVF元数据以指定较旧的 虚拟硬件版本。

VMware OVA只是一个包含文件的tarball disk.vmdkcoreos.ovf 。为了编辑FCOS用作来宾虚拟机的元数据,您 应该解压OVA构件,编辑OVF文件,然后创建一个新的OVA文件。

下面的示例命令将OVF硬件版本从预配置的 价值与硬件版本之比 13 。(注:OVF中的默认设置可能会更改。)

tar -xvf fedora-coreos-35.20220424.3.0-vmware.x86_64.ova
sed -iE 's/vmx-[0-9]*/vmx-13/' coreos.ovf
tar -H posix -cvf fedora-coreos-35.20220424.3.0-vmware-vmx-13.x86_64.ova coreos.ovf disk.vmdk