Ironic Python Agent (IPA)¶
本节涵盖 Ironic Python Agent (IPA) 的配置,它由 Ironic 和 Ironic Inspector 用于部署和检查裸机节点。这由在种子主机上运行的 Bifrost 服务使用,如果启用了 (kolla_enable_ironic 为 true),也由在超云中运行的 Ironic 和 Ironic Inspector 服务用于裸机计算。IPA 配置通常应用于 ${KAYOBE_CONFIG_PATH}/ipa.yml。有关 IPA 用法和配置的完整详细信息,请参阅 IPA 文档。
Ironic Python Agent (IPA) 镜像构建配置¶
注意
如果未在本地构建 IPA 镜像 (ipa_build_images 为 false),则可以跳过本节。
以下选项涵盖通过 Diskimage-builder (DIB) 构建 IPA 镜像。有关完整详细信息,请参阅 Diskimage-builder 文档。
默认配置构建一个 CentOS Stream 9 内存盘镜像,其中包含上游 IPA 源代码,并已启用串行控制台。
通过 kayobe seed deployment image build 为 Bifrost 构建镜像,如果已启用,通过 kayobe overcloud deployment image build 为超云中的 Ironic 构建镜像。
ipa_build_images是否从源代码构建 IPA 镜像。默认值为
False。ipa_build_source_urlIPA 源代码仓库的 URL。默认值为 https://opendev.org/openstack/ironic-python-agent
ipa_build_source_versionIPA 源代码仓库的版本。默认值为
{{ openstack_branch }}。ipa_builder_source_urlIPA 构建器源代码仓库的 URL。默认值为 https://opendev.org/openstack/ironic-python-agent-builder
ipa_builder_source_versionIPA 构建器源代码仓库的版本。默认值为
master。ipa_build_dib_host_packages_extra要安装的额外构建主机软件包列表。默认值为
[ 'zstd' ]。ipa_build_dib_elements_default构建 IPA 镜像时要使用的默认 Diskimage Builder (DIB) 元素列表。默认值为,如果
os_distribution为"rocky",则为["centos", "dynamic-login", "enable-serial-console", "ironic-python-agent-ramdisk"],否则为["ubuntu", "dynamic-login", "enable-serial-console", "ironic-python-agent-ramdisk"]。ipa_build_dib_elements_extra构建 IPA 镜像时要使用的额外 Diskimage Builder (DIB) 元素列表。默认值为一个空列表。
ipa_build_dib_elements构建 IPA 镜像时要使用的 Diskimage Builder (DIB) 元素列表。默认值为
ipa_build_dib_elements_default和ipa_build_dib_elements_extra的组合。ipa_build_dib_env_default在 IPA 镜像构建期间提供给 Diskimage Builder (DIB) 的默认环境变量字典。默认值为,如果
os_distribution为"rocky",则为{"DIB_RELEASE": "9-stream", "DIB_REPOLOCATION_ironic_python_agent": "{{ ipa_build_source_url }}", "DIB_REPOREF_ironic_python_agent": "{{ ipa_build_source_version }}", "DIB_REPOREF_requirements": "{{ ipa_build_source_version }}"},否则为{"DIB_RELEASE": "{{ os_release }}", "DIB_REPOLOCATION_ironic_python_agent": "{{ ipa_build_source_url }}", "DIB_REPOREF_ironic_python_agent": "{{ ipa_build_source_version }}", "DIB_REPOREF_requirements": "{{ ipa_build_source_version }}"}。ipa_build_dib_env_extra在 IPA 镜像构建期间提供给 Diskimage Builder (DIB) 的额外环境变量字典。默认值为一个空字典。
ipa_build_dib_env在 IPA 镜像构建期间提供给 Diskimage Builder (DIB) 的环境变量字典。默认值为
ipa_build_dib_env_default和ipa_build_dib_env_extra的组合。ipa_build_dib_git_elements_default包含 Diskimage Builder (DIB) 元素的 git 仓库的默认列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认值为一个 IPA 构建器条目。
ipa_build_dib_git_elements_extra包含 Diskimage Builder (DIB) 元素的 git 仓库的额外列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认值为无。
ipa_build_dib_git_elements包含 Diskimage Builder (DIB) 元素的 git 仓库列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认值为
ipa_build_dib_git_elements_default和ipa_build_dib_git_elements_extra的组合。ipa_build_dib_packages要安装的 DIB 软件包列表。默认值为无。
ipa_build_upper_constraints_file用于安装用于构建 IPA 镜像的虚拟环境中的软件包的上限约束文件。默认值为
{{ pip_upper_constraints_file }}。
示例:本地构建 IPA 镜像¶
要本地构建 IPA 镜像
ipa.yml¶ipa_build_images: true
示例:从自定义 git 仓库安装 IPA¶
要从自定义 git 仓库安装 IPA
ipa.yml¶ipa_source_url: https://git.example.com/ironic-python-agent
ipa_source_version: downstream
示例:添加一个元素¶
在以下示例中,我们将扩展 DIB 元素列表以添加 mellanox 元素,这对于检查具有 Mellanox InfiniBand 网卡的硬件非常有用。
ipa.yml¶ipa_build_dib_elements_extra:
- "mellanox"
示例:动态允许访问 IPA 环境¶
在调试失败的部署时,有时需要动态允许访问镜像。
可以使用 dynamic-login 元素 通过将它们附加到内核参数来授权 SSH 密钥。此元素自 Epoxy 18.0.0 版本以来包含在 IPA 镜像中。在早期版本中,可以使用以下方法添加它:
ipa.yml¶ipa_build_dib_elements_extra:
- "dynamic-login"
可以使用 kolla_bifrost_extra_kernel_options 变量配置 Bifrost 以使用 dynamic-login
bifrost.yml¶kolla_bifrost_extra_kernel_options:
- sshkey="ssh-rsa BBA1..."
使用 kayobe seed service deploy 应用更新的配置。
可以使用 kolla_ironic_kernel_append_params_extra 变量配置 Overcloud Ironic
ironic.yml¶kolla_ironic_kernel_append_params_extra:
- sshkey="ssh-rsa BBA1..."
使用 kayobe overcloud service deploy 应用更新的配置。
有关 IPA 故障排除的更多信息,请参见 此处。
示例:配置开发用户帐户¶
警告
不应在生产环境中使用开发用户帐户。
在调试失败的部署时,有时需要允许通过预配置的用户帐户访问镜像,该帐户具有已知密码。这可以通过 devuser 元素来实现。
本示例演示如何添加 devuser 元素,并配置具有无密码 sudo 权限的用户名和密码
ipa.yml¶ipa_build_dib_elements_extra:
- "devuser"
ipa_build_dib_env_extra:
DIB_DEV_USER_USERNAME: "devuser"
DIB_DEV_USER_PASSWORD: "correct horse battery staple"
DIB_DEV_USER_PWDLESS_SUDO: "yes"
有关 IPA 故障排除的更多信息,请参见 此处。
示例:配置自定义 DIB 元素¶
有时使用 DIB 本身未提供的自定义 DIB 元素会很有用。可以通过在 git 仓库中共享它们来完成此操作。
ipa.yml¶ipa_build_dib_elements_extra:
- "my-element"
ipa_build_dib_git_elements:
- repo: "https://git.example.com/custom-dib-elements"
local: "{{ source_checkout_path }}/custom-dib-elements"
version: "master"
elements_path: "elements"
在此示例中,https://git.example.com/custom-dib-elements 的 master 分支将具有一个顶级 elements 目录,其中包含一个用于该元素的 my-element 目录。
示例:安装软件包¶
可能需要在 IPA 镜像中安装其他软件包。而不是需要编写自定义 DIB 元素,我们可以使用 ipa_build_dib_packages 变量。例如,要安装 biosdevname 软件包
ipa.yml¶ipa_build_dib_packages:
- "biosdevname"
Ironic Python Agent (IPA) 镜像配置¶
注意
如果正在本地构建 IPA 镜像 (ipa_build_images 为 true),则可以跳过本节。
以下选项配置用于检查和部署的 Ironic Python Agent 镜像的来源。有关完整详细信息,请参阅 Ironic Python Agent 文档。
ipa_images_upstream_url_suffix上游 Ironic 部署镜像文件的后缀。默认值基于
{{ openstack_branch }}。ipa_images_kernel_name要在 Glance 中注册的 Ironic 部署内核镜像的名称。默认值为
ipa.kernel。ipa_kernel_upstream_url要下载的 Ironic 部署内核镜像的 URL。默认值为
https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos9{{ ipa_images_upstream_url_suffix }}.kernel。ipa_kernel_checksum_urlIronic 部署内核镜像校验和的 URL。默认值为
{{ ipa_kernel_upstream_url }}.{{ ipa_kernel_checksum_algorithm }}。ipa_kernel_checksum_algorithmIronic 部署内核镜像校验和的算法。默认值为
sha256。ipa_images_ramdisk_name要在 Glance 中注册的 Ironic 部署内存盘镜像的名称。默认值为
ipa.initramfs。ipa_ramdisk_upstream_url要下载的 Ironic 部署内存盘镜像的 URL。默认值为
https://tarballs.openstack.org/ironic-python-agent/dib/files/ipa-centos9{{ ipa_images_upstream_url_suffix }}.initramfs。ipa_ramdisk_checksum_urlIronic 部署内存盘镜像校验和的 URL。默认值为
{{ ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_checksum_algorithm }}。ipa_ramdisk_checksum_algorithmIronic 部署内存盘镜像校验和的算法。默认值为
sha256。
Ironic Python Agent (IPA) 部署配置¶
以下选项配置 IPA 在部署和检查期间的操作方式。
ipa_collect_lldp是否启用 LLDP TLV 的收集。默认值为
True。ipa_collectors_default注意
extra-hardware目前未包含在内,因为它需要一个带有hardwarepython 模块安装的内存盘。要运行的默认检查收集器列表。默认值为
["default", "logs", "pci-devices"]。ipa_collectors_extra要运行的额外检查收集器列表。默认值为无。
ipa_collectors要运行的检查收集器列表。默认值为
ipa_collectors_default和ipa_collectors_extra的组合。ipa_benchmarks_default要运行的默认检查基准测试列表。默认值为
["cpu", "disk", "ram"]。ipa_benchmarks_extra要运行的额外检查基准测试列表。默认值为无。
ipa_benchmarks注意
必须启用
extra-hardware收集器才能在检查期间执行基准测试。要运行的检查基准测试列表。默认值为
ipa_benchmarks_default和ipa_benchmarks_extra的组合。ipa_kernel_options_defaultIronic python agent 的默认内核参数列表。默认包括
ipa-collect-lldp、ipa-inspection-collectors和ipa-inspection-benchmarks,其参数来自ipa_collect_lldp、ipa_collectors和ipa_benchmarks。ipa_kernel_options_extraIronic python agent 的附加内核参数列表。默认情况下为空。
ipa_kernel_optionsIronic python agent 的内核参数列表。默认情况下是
ipa_kernel_options_default和ipa_kernel_options_extra的组合。
示例:添加 extra-hardware 收集器¶
在检查期间,extra-hardware 收集器可用于收集有关硬件的附加信息。运行基准测试也需要此收集器。此收集器依赖于 Python hardware 包,默认情况下未安装在 IPA 镜像中。
以下示例启用 extra-hardware 收集器
ipa.yml¶ipa_collectors_extra:
- "extra-hardware"
ironic-python-agent-builder 仓库提供了一个 extra-hardware 元素,可用于安装此包。如果本地构建 IPA 镜像,可以使用如下方式:
ipa.yml¶ipa_build_dib_elements_extra:
- "extra-hardware"
示例:向 IPA 传递额外的内核参数¶
以下示例演示了如何向 IPA 传递额外的内核参数
ipa.yml¶ipa_kernel_options_extra:
- "foo=bar"