安装 Ironic Python Agent

镜像构建器

与其他 Python 软件不同,在使用前必须先构建或下载 IPA ramdisk 镜像。这是因为 IPA 不是安装在操作系统中,而是从 ramdisk 内部运行。

如果您需要构建自己的镜像,请使用 ironic-python-agent-builder 项目中的工具。

IPA 标志

您可以在启动时向 IPA 传递各种标志来更改其行为。

  • --debug:启用调试日志记录。

IPA 和 TLS

客户端配置

在运行过程中,IPA 会向许多其他服务发出 HTTP 请求,目前包括

  • ironic 用于查找/心跳

  • ironic-inspector 用于发布内省结果

  • HTTP 镜像存储用于获取要写入节点磁盘的用户镜像(对象存储服务或其他存储用户镜像的服务,当 ironic 以独立模式运行时)

当这些服务配置为需要 TLS 加密连接时,可以配置 IPA 以正确使用这些安全连接,或忽略验证这些 TLS 连接。

配置主要发生在 IPA 配置文件中(默认是 /etc/ironic_python_agent/ironic_python_agent.conf,也可以是放置在 /etc/ironic-python-agent.d 中的任何文件)或传递给 ironic-python-agent 的命令行参数,也可以通过内核命令行参数提供一些选项。

[DEFAULT] 配置文件的部分中可用的选项是

insecure

是否验证服务器 TLS 证书。如果未显式指定,则默认值为 ipa-insecure 内核命令行参数的值(转换为布尔值)。此内核命令行参数的默认值被视为 False。通过将 ipa-insecure=1 添加到 ironic 配置文件中 [pxe]pxe_append_params 的值来覆盖它,将允许在 CI 类似的環境中运行相同的基于 IPA 的部署 ramdisk,而无需将自定义 CA 文件添加到部署 ramdisk(如下所示),即使服务正在使用具有自签名证书的安全 HTTPS 端点。

cafile

PEM 编码的证书颁发机构文件的路径。如果未指定,将使用可用的系统范围内的 CA 列表来验证服务器证书。因此,为了以安全的方式使用 IPA 与其他服务的 HTTPS 端点(insecure 选项为 False,见上文),操作员应确保这些服务的证书可以被部署 ramdisk 中存在的根 CA 验证,或者将自定义 CA 文件添加到 ramdisk 并将此 IPA 选项设置为指向 ramdisk 构建时该文件。

certfile

PEM 编码的客户端证书文件路径。当服务配置为需要 SSL 加密连接上的客户端证书时,必须使用此选项。此证书文件必须添加到部署 ramdisk,并且其路径必须通过此选项在 ramdisk 构建时为 IPA 指定。只有在同时设置了 keyfile 选项时,此选项才有效。

keyfile

PEM 编码的客户端证书密钥文件路径。当服务配置为需要 SSL 加密连接上的客户端证书时,必须使用此选项。此密钥文件必须添加到部署 ramdisk,并且其路径必须通过此选项在 ramdisk 构建时为 IPA 指定。只有在同时设置了 certfile 选项时,此选项才有效。

目前,cafile/certfile/keyfile 选项的单个集合用于向其他所有服务的 HTTP 请求。

服务器配置

从 Victoria 版本开始,ironic-python-agent 提供的 API 也可以通过 TLS 进行保护。有两种方法可以做到这一点

自动 TLS

如果未启用其他选项,则默认启用此选项。如果 ironic 支持 API 版本 1.68,则将在运行时生成一个新的自签名 TLS 证书,并将其发送到 ironic 进行心跳。

ironic 端无需特殊配置。

手动 TLS

如果您需要提供自己的 TLS 证书,可以在构建镜像时进行配置。在 ironic-python-agent 配置文件中设置以下选项

[DEFAULT]
listen_tls = True
advertise_protocol = https
# Disable automatic TLS.
enable_auto_tls = False

[ssl]
# Certificate and private key file paths (on the ramdisk).
cert_file = /path/to/certificate
# The private key must not be password-protected!
key_file = /path/to/private/key
# Optionally, authenticate connecting clients (i.e. ironic conductors).
#ca_file = /path/to/ca

如果使用 DIB 构建 ramdisk,请使用 ironic-python-agent-tls 元素来自动执行这些步骤。

在 ironic 端,您有两种选择

  • 如果证书可以通过主机验证,即包含代理的主机名或 IP 地址,则将其路径添加到每个节点

    baremetal node set <node> --driver-info agent_verify_ca=/path/to/ca/or/certificate
    
  • 通常,代理的 IP 地址无法提前知道,因此您需要禁用主机验证

    baremetal node set <node> --driver-info agent_verify_ca=False
    

硬件管理器

硬件管理器是 IPA 支持相同代理中的不同硬件平台的方式。可以通过部署自己的硬件管理器来覆盖对硬件执行的任何操作。

自定义硬件管理器允许您将硬件特定的工具、文件和清理步骤包含在 Ironic Python Agent 中。例如,您可以将 BIOS 刷新实用程序和 BIOS 文件包含在自定义 ramdisk 中。您的自定义硬件管理器可以公开一个调用刷新实用程序并刷新打包的 BIOS 版本(甚至可以从经过测试的网络服务器下载)的清理步骤。

希望构建自己硬件管理器的操作员应参考 硬件管理器 中提供的文档。