diskimage-builder images¶
使用 diskimage-builder 构建的镜像建议在实际硬件上用于生产环境。推荐的发行版是
CentOS Stream 9
Debian Bookworm (
debian-minimal元素)
以下应该可以工作,但仅接受有限的测试和支持
Ubuntu 20.04 Focal
Debian Bullseye (
debian-minimal元素)
构建¶
… 使用辅助脚本¶
要使用 ironic-python-agent-builder 构建镜像,请运行
ironic-python-agent-builder <distribution, e.g. ubuntu>
您可以通过 -e 标志添加其他 diskimage-builder 元素
ironic-python-agent-builder -e <extra-element> --release 9-stream centos
您可以指定目标镜像的基本名称
ironic-python-agent-builder -o my-ipa --release 9-stream centos
您可以通过设置 ARCH 环境变量来指定目标镜像的架构(默认值为 amd64)
export ARCH=aarch64
ironic-python-agent-builder -o my-ipa --release 9-stream centos
… 使用 diskimage-builder¶
您也可以直接使用 diskimage-builder。首先,您需要将 ELEMENTS_PATH 变量设置为正确的位置
如果使用
pip install --user安装,请使用export ELEMENTS_PATH=$HOME/.local/share/ironic-python-agent-builder/dib
在 Fedora/CentOS/RHEL 上(通过
sudo pip install或从软件包安装)export ELEMENTS_PATH=/usr/share/ironic-python-agent-builder/dib
在 Debian 及其衍生版本上,如果使用
sudo pip install安装export ELEMENTS_PATH=/usr/local/share/ironic-python-agent-builder/dib
现在,您可以构建镜像,添加 ironic-python-agent-ramdisk 元素,例如
export DIB_RELEASE=9-stream
disk-image-create -o ironic-python-agent \
ironic-python-agent-ramdisk centos
要使用 ironic-python-agent 的特定分支,请使用
export DIB_REPOREF_ironic_python_agent=origin/stable/queens
export DIB_REPOREF_requirements=origin/stable/queens
要为除 amd64 以外的架构构建镜像,您可以设置 ARCH 环境变量或使用 -a 来指定目标架构
disk-image-create -a arm64 -o ironic-python-agent \
ironic-python-agent-ramdisk fedora
ISO 镜像¶
此外,IPA ramdisk 可以打包在 ISO 中,用于某些虚拟介质驱动程序。使用 ironic-python-agent-builder 仓库中的 iso-image-create 脚本,将 initrd 和内核传递给它,例如
./tools/iso-image-create -o /path/to/output.iso -i /path/to/ipa.initrd -k /path/to/ipa.kernel
这是一个通用工具,可用于将任何 initrd 和内核组合成适合启动的 ISO,因此应该适用于任何 IPA ramdisk。
高级选项¶
禁用救援¶
默认情况下,镜像中启用了救援模式。由于它允许网络上的任何人设置 ramdisk 的 root 密码,因此如果您不支持救援功能,可以禁用它。在构建镜像之前设置以下内容
export DIB_IPA_ENABLE_RESCUE=false
SSH 访问¶
可以使用 dynamic-login 或 devuser 元素将 SSH 访问添加到 DIB 构建的 IPA 镜像。
dynamic-login 元素允许操作员通过内核命令行参数在启动时注入 SSH 密钥
将
sshkey="ssh-rsa <您的 公钥 在此>"添加到ironic.conf文件中的pxe_append_params设置中。警告
公钥周围的引号很重要!
重新启动 ironic-conductor。
注意
此元素默认添加到已发布的镜像中。
devuser 元素允许在构建时创建用户,例如
export DIB_DEV_USER_USERNAME=username
export DIB_DEV_USER_PWDLESS_SUDO=yes
export DIB_DEV_USER_AUTHORIZED_KEYS=$HOME/.ssh/id_rsa.pub
disk-image-create debian ironic-python-agent-ramdisk devuser
一致的网络接口命名¶
基础云镜像通常通过插入一个空的 udev 规则来禁用一致的网络接口命名。如果您需要实例镜像或部署镜像,请包含 stable-interface-names 元素以获得一致的网络接口命名。
ironic-python-agent-builder -e stable-interface-names --release 9-stream centos
固件移除¶
默认情况下,该元素会移除一些固件 blob 以减小镜像大小。列表可以在本段下方找到。这些固件镜像中的大多数由 SoC、Wi-Fi 芯片、一些 GPU 和 Smartnics 使用,这些不太可能遇到。如果您想覆盖此设置,请将 IPA_REMOVE_FIRMWARE 环境变量更改为以逗号分隔的目录或文件列表,这些目录或文件位于 /usr/lib/firmware 下。将其设置为一个空字符串以禁用固件移除。
移除的固件
amdgpunetronomeqcomti-communicationti-keystoneueagle-atmrsimrvlbrcmmediatekath10krtlwifi
可用元素¶
Ironic Python Agent (IPA) 额外硬件¶
此元素将 hardware python 包添加到 Ironic Python Agent (IPA) ramdisk。它还安装了 hardware 模块的几个软件包依赖项。
hardware 包提供了改进的硬件内省能力并支持基准测试。可以通过在 [DEFAULT] inspection_collectors 选项或 ipa-inspection-collectors 内核命令行参数中添加 extra-hardware 收集器来启用此功能。
以下环境变量可以设置为配置基于源代码安装时的元素
DIB_IPA_HARDWARE_PACKAGE要使用的完整hardwarePython 包描述符。如果未设置,将使用DIB_IPA_HARDWARE_VERSION。DIB_IPA_HARDWARE_VERSION在未设置DIB_IPA_HARDWARE_PACKAGE时要安装的hardware包的版本。如果未设置,将安装最新版本。
ironic-python-agent-ramdisk¶
构建带有 ironic-python-agent 的 ramdisk。
更多信息请参见:https://docs.openstack.org/ironic-python-agent/2025.2/
除了安装 ironic-python-agent 之外,此元素还执行以下操作
安装
dhcp-all-interfaces,以便节点在启动时尝试在所有可用的网络接口上获取 IP 地址。禁用基于 SysV 和 systemd 的系统上的
iptables服务。禁用基于 Upstart 的系统上的
ufw服务。安装 ironic-python-agent 运行所需的软件包:
qemu-utilspartedhdparmutil-linux从源代码安装时,还会安装
python-dev和gcc,以便支持 ironic-python-agent 及其依赖项的基于源代码的安装。安装证书(如果有),该证书设置为环境变量
DIB_IPA_CERT,用于验证 ironic-python-agent 的真实性。证书可以是自签名证书或 CA 证书。使用环境变量
DIB_IPA_COMPRESS_CMD指定的命令压缩 initramfs,默认值为“gzip”。此命令应从 stdin 监听原始数据,并将压缩数据写入 stdout。命令可以带参数。如果未将
DIB_IPA_ENABLE_RESCUE设置为false,则配置救援模式。
此元素输出两个文件
$IMAGE-NAME.initramfs:包含 ironic-python-agent (IPA) 服务的部署 ramdisk 文件。$IMAGE-NAME.kernel:内核二进制文件。
注意
基于软件包的安装目前仅在 systemd 初始化系统上启用该服务。如果存在包含 upstart 或 sysv 打包的代理程序包,可以轻松更改此设置。
注意
使用 ramdisk 需要至少 1.5GB 的内存
ironic-python-agent-tls¶
为 ironic-python-agent-ramdisk 添加 TLS 支持。
默认情况下,此元素将在 IPA 中启用 TLS API 支持,并创建一个在构建时创建的自签名证书和密钥。
可选地,您可以提供自己的 SSL 证书和密钥,以及可选的 CA,通过以下环境变量。它们应设置为构建系统文件系统上的可访问路径。如果设置,它们将被复制到构建的 ramdisk 中,并且 IPA 将被配置为使用它们。
环境变量是
DIB_IPA_CERT_FILE应指向 ramdisk 使用的 TLS 证书。DIB_IPA_KEY_FILE应指向与DIB_IPA_CERT_FILE匹配的私钥。
您可以使用以下环境变量配置生成的证书
DIB_IPA_CERT_HOSTNAME生成的证书的 CN。默认值为“ipa-ramdisk.example.com”。DIB_IPA_CERT_EXPIRATION证书的有效期(天数)。默认值为 1095(三年)。
请注意,此元素生成的证书是自签名的,并且使用它们的任何节点都需要在 driver_info 中设置 agent_verify_ca=False。
此元素还可以配置 IPA 中的客户端证书验证。如果您希望验证客户端证书,请将 DIB_IPA_CA_FILE 设置为要将 IPA 客户端连接验证到的 CA 文件。此 CA 文件将被复制到构建的 ramdisk 中,并且 IPA 将被配置为使用它。