Ironic Python Agent (IPA)

本节涵盖 Ironic Python Agent (IPA) 的配置,它由 Ironic 和 Ironic Inspector 用于部署和检查裸机节点。这由在种子主机上运行的 Bifrost 服务使用,如果启用了 (kolla_enable_ironictrue),也由在超云中运行的 Ironic 和 Ironic Inspector 服务用于裸机计算。IPA 配置通常应用于 ${KAYOBE_CONFIG_PATH}/ipa.yml。有关 IPA 用法和配置的完整详细信息,请参阅 IPA 文档

Ironic Python Agent (IPA) 镜像构建配置

注意

如果未在本地构建 IPA 镜像 (ipa_build_imagesfalse),则可以跳过本节。

以下选项涵盖通过 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_url

IPA 源代码仓库的 URL。默认值为 https://opendev.org/openstack/ironic-python-agent

ipa_build_source_version

IPA 源代码仓库的版本。默认值为 {{ openstack_branch }}

ipa_builder_source_url

IPA 构建器源代码仓库的 URL。默认值为 https://opendev.org/openstack/ironic-python-agent-builder

ipa_builder_source_version

IPA 构建器源代码仓库的版本。默认值为 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_defaultipa_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_defaultipa_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_defaultipa_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-elementsmaster 分支将具有一个顶级 elements 目录,其中包含一个用于该元素的 my-element 目录。

示例:安装软件包

可能需要在 IPA 镜像中安装其他软件包。而不是需要编写自定义 DIB 元素,我们可以使用 ipa_build_dib_packages 变量。例如,要安装 biosdevname 软件包

ipa.yml
ipa_build_dib_packages:
  - "biosdevname"

Ironic Python Agent (IPA) 镜像配置

注意

如果正在本地构建 IPA 镜像 (ipa_build_imagestrue),则可以跳过本节。

以下选项配置用于检查和部署的 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_url

Ironic 部署内核镜像校验和的 URL。默认值为 {{ ipa_kernel_upstream_url }}.{{ ipa_kernel_checksum_algorithm }}

ipa_kernel_checksum_algorithm

Ironic 部署内核镜像校验和的算法。默认值为 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_url

Ironic 部署内存盘镜像校验和的 URL。默认值为 {{ ipa_ramdisk_upstream_url }}.{{ ipa_ramdisk_checksum_algorithm }}

ipa_ramdisk_checksum_algorithm

Ironic 部署内存盘镜像校验和的算法。默认值为 sha256

Ironic Python Agent (IPA) 部署配置

以下选项配置 IPA 在部署和检查期间的操作方式。

ipa_collect_lldp

是否启用 LLDP TLV 的收集。默认值为 True

ipa_collectors_default

注意

extra-hardware 目前未包含在内,因为它需要一个带有 hardware python 模块安装的内存盘。

要运行的默认检查收集器列表。默认值为 ["default", "logs", "pci-devices"]

ipa_collectors_extra

要运行的额外检查收集器列表。默认值为无。

ipa_collectors

要运行的检查收集器列表。默认值为 ipa_collectors_defaultipa_collectors_extra 的组合。

ipa_benchmarks_default

要运行的默认检查基准测试列表。默认值为 ["cpu", "disk", "ram"]

ipa_benchmarks_extra

要运行的额外检查基准测试列表。默认值为无。

ipa_benchmarks

注意

必须启用 extra-hardware 收集器才能在检查期间执行基准测试。

要运行的检查基准测试列表。默认值为 ipa_benchmarks_defaultipa_benchmarks_extra 的组合。

ipa_kernel_options_default

Ironic python agent 的默认内核参数列表。默认包括 ipa-collect-lldpipa-inspection-collectorsipa-inspection-benchmarks,其参数来自 ipa_collect_lldpipa_collectorsipa_benchmarks

ipa_kernel_options_extra

Ironic python agent 的附加内核参数列表。默认情况下为空。

ipa_kernel_options

Ironic python agent 的内核参数列表。默认情况下是 ipa_kernel_options_defaultipa_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"