Bifrost¶
本节介绍运行在 seed 主机上的 Bifrost 服务的配置。Bifrost 配置通常应用于 ${KAYOBE_CONFIG_PATH}/bifrost.yml。有关 Bifrost 的使用和配置详情,请参阅 Bifrost 文档。
Bifrost 安装¶
注意
如果使用上游 Bifrost 容器镜像,可以跳过本节。
如果本地构建 Bifrost 容器镜像,将使用以下选项。
kolla_bifrost_source_urlBifrost 源代码库的 URL。默认为 https://opendev.org/openstack/bifrost。
kolla_bifrost_source_versionBifrost 源代码库的版本(分支、标签等)。默认为
{{ 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_elementDIB 基础操作系统元素。默认为
{{ os_distribution }}。kolla_bifrost_dib_os_releaseDIB 镜像操作系统版本。默认为
{{ 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_elementsDIB 元素列表。默认为
kolla_bifrost_dib_elements_default和kolla_bifrost_dib_elements_extra的组合。kolla_bifrost_dib_init_elementDIB 初始化元素。默认为
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_varsDIB 环境变量。默认为
kolla_bifrost_dib_env_vars_default和kolla_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 服务。
Ironic Inspector 配置¶
以下选项配置 bifrost-deploy 容器中的 Ironic Inspector 服务。
kolla_bifrost_inspector_hooksInspector 处理插件列表。默认为
{{ inspector_hooks }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_inspector_port_addition在内省期间要添加为端口的 MAC 地址。可以是
all、active或pxe之一。默认为{{ inspector_add_ports }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_inspector_extra_kernel_optionsInspector 默认 PXE 配置的额外内核参数列表。默认为
{{ inspector_extra_kernel_options }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。自定义此变量时,应保留默认的额外内核参数以保持完整的节点内省能力。kolla_bifrost_inspector_rulesBifrost 的 Ironic Inspector 服务的内省规则列表。默认为
{{ inspector_rules }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_inspector_ipmi_usernameIronic inspector IPMI 用户名,通过内省规则设置。默认为
{{ ipmi_username }},定义在${KAYOBE_CONFIG_PATH}/bmc.yml中。kolla_bifrost_inspector_ipmi_passwordIronic inspector IPMI 密码,通过内省规则设置。默认为
{{ ipmi_password }},定义在${KAYOBE_CONFIG_PATH}/bmc.yml中。kolla_bifrost_inspector_lldp_switch_port_interfaceIronic inspector 网络接口名称,在该接口上检查 LLDP 开关端口描述以用作节点的名称。默认为
{{ inspector_lldp_switch_port_interface_default }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_inspector_deploy_kernelIronic inspector 部署内核位置。默认为
http://{{ provision_oc_net_name | net_ip }}:8080/ipa.kernel。kolla_bifrost_inspector_deploy_ramdiskIronic inspector 部署 ramdisk 位置。默认为
http://{{ provision_oc_net_name | net_ip }}:8080/ipa.initramfs。kolla_bifrost_inspection_timeoutovercloud 节点硬件检查超时时间(秒)。默认为
{{ inspector_inspection_timeout }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_inspector_redfish_usernameIronic inspector Redfish 用户名,通过内省规则设置。定义在
${KAYOBE_CONFIG_PATH}/bifrost.yml中。默认为{{ inspector_redfish_username }}。kolla_bifrost_inspector_redfish_passwordIronic inspector Redfish 用户名,通过内省规则设置。定义在
${KAYOBE_CONFIG_PATH}/bifrost.yml中。默认为{{ inspector_redfish_username }}。
Ironic Python Agent (IPA) 配置¶
注意
如果本地构建 IPA 镜像(ipa_build_images 为 true),则可以跳过此节。
以下选项配置 Bifrost 用于内省和部署的 Ironic Python Agent 镜像的来源。有关详细信息,请参阅 Ironic Python Agent 文档。
kolla_bifrost_ipa_kernel_upstream_urlIronic Python Agent (IPA) 内核镜像的 URL。默认为
{{ inspector_ipa_kernel_upstream_url }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_ipa_kernel_checksum_urlIronic Python Agent (IPA) 内核镜像的校验和 URL。默认为
{{ inspector_ipa_kernel_checksum_url }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_ipa_kernel_checksum_algorithmIronic Python Agent (IPA) 内核镜像的校验和算法。默认为
{{ inspector_ipa_kernel_checksum_algorithm }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_ipa_ramdisk_upstream_urlIronic Python Agent (IPA) ramdisk 镜像的 URL。默认为
{{ inspector_ipa_ramdisk_upstream_url }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_ipa_ramdisk_checksum_urlIronic Python Agent (IPA) ramdisk 镜像的校验和 URL。默认为
{{ inspector_ipa_ramdisk_checksum_url }},定义在${KAYOBE_CONFIG_PATH}/inspector.yml中。kolla_bifrost_ipa_ramdisk_checksum_algorithmIronic 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