Bifrost

本节介绍运行在 seed 主机上的 Bifrost 服务的配置。Bifrost 配置通常应用于 ${KAYOBE_CONFIG_PATH}/bifrost.yml。有关 Bifrost 的使用和配置详情,请参阅 Bifrost 文档

Bifrost 安装

注意

如果使用上游 Bifrost 容器镜像,可以跳过本节。

如果本地构建 Bifrost 容器镜像,将使用以下选项。

kolla_bifrost_source_url

Bifrost 源代码库的 URL。默认为 https://opendev.org/openstack/bifrost

kolla_bifrost_source_version

Bifrost 源代码库的版本(分支、标签等)。默认为 {{ openstack_branch }},这与 Kayobe 上游分支名称相同。

例如,从自定义 git 仓库安装 Bifrost

bifrost.yml
kolla_bifrost_source_url: https://git.example.com/bifrost
kolla_bifrost_source_version: downstream

Bifrost 接口配置

当默认的(PXE 接口 MAC)不适用于管理网络(例如,置备和管理分离的接口)时,以下选项允许配置置备服务器的 ipv4 接口 MAC。

bifrost.yml
kolla_bifrost_use_introspection_mac: true

这将导致 overloud provision 命令查询 Bifrost 的内省数据以获取绑定到管理网络的接口的 MAC 地址。此选项的局限性在于,如果接口是 bond 或 bridge,Kayobe 将使用第一个物理 NIC。

或者,您可以设置特定主机的 host_vars 如下

host_vars
kolla_bifrost_ipv4_interface_mac: "<mac_address_goes_here>"

Overcloud 根磁盘镜像配置

注意

此配置仅在 overcloud_dib_build_host_images(在 ${KAYOBE_CONFIG_PATH}/overcloud-dib.yml 中设置)更改为 false 时适用。

Bifrost 使用 Diskimage builder (DIB) 来构建一个根磁盘镜像,该镜像在 overcloud 主机置备时部署到这些主机上。以下选项配置如何构建此镜像。有关构建磁盘镜像的更多信息,请参阅 Diskimage-builder 文档

默认配置使用选定的 OS 分发版 构建整个磁盘(分区)镜像,并启用串行控制台,如果使用 CentOS Stream,则禁用 SELinux。Rocky Linux 10 用户应使用通过 Diskimage builder 直接构建 镜像的默认方法。

kolla_bifrost_dib_os_element

DIB 基础操作系统元素。默认为 {{ os_distribution }}

kolla_bifrost_dib_os_release

DIB 镜像操作系统版本。默认为 {{ os_release }}

kolla_bifrost_dib_elements_default

在 Train 版本中添加。在早期版本中使用 kolla_bifrost_dib_elements。

默认 DIB 元素列表。默认为 ["enable-serial-console", "vm"]vm 元素命名不佳,它会导致 DIB 构建整个磁盘镜像而不是单个分区。

kolla_bifrost_dib_elements_extra

在 Train 版本中添加。在早期版本中使用 kolla_bifrost_dib_elements。

额外的 DIB 元素列表。默认无。

kolla_bifrost_dib_elements

DIB 元素列表。默认为 kolla_bifrost_dib_elements_defaultkolla_bifrost_dib_elements_extra 的组合。

kolla_bifrost_dib_init_element

DIB 初始化元素。默认为 cloud-init-datasources

kolla_bifrost_dib_env_vars_default

在 Train 版本中添加。在早期版本中使用 kolla_bifrost_dib_env_vars。

DIB 默认环境变量。默认为 {DIB_BOOTLOADER_DEFAULT_CMDLINE: "nofb nomodeset gfxpayload=text net.ifnames=1", "DIB_CLOUD_INIT_DATASOURCES": "ConfigDrive"}

kolla_bifrost_dib_env_vars_extra

在 Train 版本中添加。在早期版本中使用 kolla_bifrost_dib_env_vars。

DIB 额外环境变量。默认无。

kolla_bifrost_dib_env_vars

DIB 环境变量。默认为 kolla_bifrost_dib_env_vars_defaultkolla_bifrost_dib_env_vars_extra 的组合。

kolla_bifrost_dib_packages

要安装的 DIB 包列表。默认不安装额外包。

磁盘镜像在 seed 服务部署期间构建。值得注意的是,目前,如果镜像已存在,则不会重新构建。要强制重新构建镜像,需要删除该文件。在 seed 上

注意

示例显示了使用 Docker 作为容器引擎时的命令。如果使用 Podman,只需将命令中的 docker 替换为 sudo podman

docker exec bifrost_deploy rm /httpboot/deployment_image.qcow2

然后在控制主机上

(kayobe) $ kayobe seed service deploy

示例:添加一个元素

在以下示例中,我们扩展了 DIB 元素列表以添加 growpart 元素

bifrost.yml
kolla_bifrost_dib_elements_extra:
  - "growpart"

示例:构建 XFS 根文件系统镜像

默认情况下,DIB 会将镜像格式化为 ext4。在某些情况下,使用 XFS 可能很有用,例如在使用 overlay Docker 存储驱动程序时,该驱动程序可能会达到 ext4 允许的最大硬链接数。

在 DIB 中,我们通过将 FS_TYPE 环境变量设置为 xfs 来实现此目的。

bifrost.yml
kolla_bifrost_dib_env_vars_extra:
  FS_TYPE: "xfs"

示例:配置开发用户帐户

警告

不应在生产环境中使用开发用户帐户。

在调试失败的部署时,有时需要允许通过预配置的用户帐户访问镜像,该帐户具有已知密码。这可以通过 devuser 元素来实现。

本示例演示如何添加 devuser 元素,并配置具有无密码 sudo 权限的用户名和密码

bifrost.yml
kolla_bifrost_dib_elements_extra:
  - "devuser"

kolla_bifrost_dib_env_vars_extra:
  DIB_DEV_USER_USERNAME: "devuser"
  DIB_DEV_USER_PASSWORD: "correct horse battery staple"
  DIB_DEV_USER_PWDLESS_SUDO: "yes"

或者,可以使用 dynamic-login 元素,通过将 SSH 密钥附加到内核参数来授权 SSH 密钥。

示例:安装软件包

可能需要在根磁盘镜像中安装其他软件包。通过使用 kolla_bifrost_dib_packages 变量,而不是编写自定义 DIB 元素。例如,要安装 biosdevname

bifrost.yml
kolla_bifrost_dib_packages:
  - "biosdevname"

磁盘镜像部署配置

要部署的根磁盘镜像的名称可以通过 kolla_bifrost_deploy_image_filename 选项进行配置,该选项默认为 deployment_image.qcow2。它可以在 ${KAYOBE_CONFIG_PATH}/bifrost.yml 中全局定义,或在 Kayobe 清单中按组或按主机定义。这可用于在 overcloud 中置备不同的镜像。

可能需要使用自定义设置部署 overcloud 主机,这些设置可以通过 kolla_bifrost_deploy_image_user_data_content 选项在置备期间配置的 cloud-init user-data 进行配置。默认值为空字符串。

bifrost.yml
kolla_bifrost_deploy_image_user_data_content: |
  users:
    name: myuser
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    passwd: <HASH_OF_MY_PASSWORD>
    lock_passwd: false

  timezone: "Europe/Paris"

虽然 Bifrost 只能构建一个磁盘镜像,但从 Yoga 12.0.0 版本开始,Kayobe 支持直接通过 Diskimage builder 构建多个磁盘镜像。有关更多详细信息,请参阅 overcloud 主机磁盘镜像构建文档

Ironic 配置

以下选项配置 bifrost-deploy 容器中的 Ironic 服务。

kolla_bifrost_enabled_hardware_types

要为 Bifrost 的 Ironic 启用 硬件类型 列表。默认为 ["ipmi"]

kolla_bifrost_extra_kernel_options

Bifrost 的 Ironic PXE 配置的 额外内核参数 列表。默认无。

Ironic Inspector 配置

以下选项配置 bifrost-deploy 容器中的 Ironic Inspector 服务。

kolla_bifrost_inspector_hooks

Inspector 处理插件列表。默认为 {{ inspector_hooks }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_inspector_port_addition

在内省期间要添加为端口的 MAC 地址。可以是 allactivepxe 之一。默认为 {{ inspector_add_ports }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_inspector_extra_kernel_options

Inspector 默认 PXE 配置的额外内核参数列表。默认为 {{ inspector_extra_kernel_options }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。自定义此变量时,应保留默认的额外内核参数以保持完整的节点内省能力。

kolla_bifrost_inspector_rules

Bifrost 的 Ironic Inspector 服务的内省规则列表。默认为 {{ inspector_rules }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_inspector_ipmi_username

Ironic inspector IPMI 用户名,通过内省规则设置。默认为 {{ ipmi_username }},定义在 ${KAYOBE_CONFIG_PATH}/bmc.yml 中。

kolla_bifrost_inspector_ipmi_password

Ironic inspector IPMI 密码,通过内省规则设置。默认为 {{ ipmi_password }},定义在 ${KAYOBE_CONFIG_PATH}/bmc.yml 中。

kolla_bifrost_inspector_lldp_switch_port_interface

Ironic inspector 网络接口名称,在该接口上检查 LLDP 开关端口描述以用作节点的名称。默认为 {{ inspector_lldp_switch_port_interface_default }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_inspector_deploy_kernel

Ironic inspector 部署内核位置。默认为 http://{{ provision_oc_net_name | net_ip }}:8080/ipa.kernel

kolla_bifrost_inspector_deploy_ramdisk

Ironic inspector 部署 ramdisk 位置。默认为 http://{{ provision_oc_net_name | net_ip }}:8080/ipa.initramfs

kolla_bifrost_inspection_timeout

overcloud 节点硬件检查超时时间(秒)。默认为 {{ inspector_inspection_timeout }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_inspector_redfish_username

Ironic inspector Redfish 用户名,通过内省规则设置。定义在 ${KAYOBE_CONFIG_PATH}/bifrost.yml 中。默认为 {{ inspector_redfish_username }}

kolla_bifrost_inspector_redfish_password

Ironic inspector Redfish 用户名,通过内省规则设置。定义在 ${KAYOBE_CONFIG_PATH}/bifrost.yml 中。默认为 {{ inspector_redfish_username }}

Ironic Python Agent (IPA) 配置

注意

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

以下选项配置 Bifrost 用于内省和部署的 Ironic Python Agent 镜像的来源。有关详细信息,请参阅 Ironic Python Agent 文档

kolla_bifrost_ipa_kernel_upstream_url

Ironic Python Agent (IPA) 内核镜像的 URL。默认为 {{ inspector_ipa_kernel_upstream_url }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_ipa_kernel_checksum_url

Ironic Python Agent (IPA) 内核镜像的校验和 URL。默认为 {{ inspector_ipa_kernel_checksum_url }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_ipa_kernel_checksum_algorithm

Ironic Python Agent (IPA) 内核镜像的校验和算法。默认为 {{ inspector_ipa_kernel_checksum_algorithm }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_ipa_ramdisk_upstream_url

Ironic Python Agent (IPA) ramdisk 镜像的 URL。默认为 {{ inspector_ipa_ramdisk_upstream_url }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_ipa_ramdisk_checksum_url

Ironic Python Agent (IPA) ramdisk 镜像的校验和 URL。默认为 {{ inspector_ipa_ramdisk_checksum_url }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

kolla_bifrost_ipa_ramdisk_checksum_algorithm

Ironic Python Agent (IPA) ramdisk 镜像的校验和算法。默认为 {{ inspector_ipa_ramdisk_checksum_algorithm }},定义在 ${KAYOBE_CONFIG_PATH}/inspector.yml 中。

清单配置

注意

此功能目前未经充分测试。建议使用 overcloud 服务器的自动发现功能。

以下选项用于配置 Bifrost 的静态服务器清单。

kolla_bifrost_servers

Bifrost 的服务器清单,采用 JSON 文件格式

自定义配置

可以通过以下文件提供 Bifrost 的任意 Ansible 变量的进一步配置

  • ${KAYOBE_CONFIG_PATH}/kolla/config/bifrost/bifrost.yml

  • ${KAYOBE_CONFIG_PATH}/kolla/config/bifrost/dib.yml

这两个文件都会作为额外变量文件传递给 ansible-playbook,但命名方案提供了 DIB 镜像相关变量与其他变量的分隔。可能需要检查 Bifrost 源代码 以获取可配置变量的完整列表。

例如,配置 Ironic Inspector 的调试日志

kolla/config/bifrost/bifrost.yml
inspector_debug: true