Bifrost 安装¶
介绍¶
本文档将指导您使用 Bifrost 安装 Bare Metal 服务 (ironic)。
支持的操作系统¶
完全支持(在 CI 中完全测试,没有已知或潜在问题)
CentOS Stream 10
注意
RHEL 10 及其衍生版本预计可以工作,但未明确测试。
Ubuntu 22.04 “Jammy” 和 24.04 “Noble”
Debian 12 “Bookworm”
注意
操作系统会不断发展,对它们的的支持也会随之变化,即使在稳定分支上也是如此。
Bifrost 结构¶
安装和使用 Bifrost 大致分为三个步骤
install:通过下载和/或构建机器镜像,以及安装和配置必要的服务来准备本地环境。
enroll-dynamic:以可定制的硬件清单文件作为输入,使用 ironic 注册清单中的硬件,并为使用先前下载的镜像进行部署适当地配置每个硬件。
deploy-dynamic:指示 ironic 将操作系统部署到每台机器上。
Bifrost 的安装可以通过三种方式进行
通过
bifrost-cli命令行工具。对于想要即插即用的用户来说,这是推荐的路径。它提供最小的配置并使用推荐的默认值。
通过直接调用提供的 playbook 中的
ansible-playbook。通过使用 Bifrost 提供的 Ansible roles 编写自己的 playbook。
如果您想了解 Bifrost 安装了什么以及如何安装的,请参阅 Bifrost 架构。
预安装步骤¶
了解您的环境¶
在开始之前,您需要收集有关您的裸机环境的某些信息(如果您在虚拟机上测试 Bifrost,则可以跳过此步骤)。
对于托管 Bifrost 的机器,您需要弄清楚
用于裸机机器和 Bifrost 服务之间通信的网络接口。
在当前使用 firewalld 的系统(Fedora、CentOS 和 RHEL)上,将创建一个新的区域
bifrost,并将网络接口移动到该区域。DHCP、PXE 和 API 服务仅将添加到此区域。如果您需要在其他区域中使用任何这些服务,则需要自行配置防火墙。警告
如果您将相同的 NIC 用于裸机节点和外部访问,安装 bifrost 可能会使您无法 SSH 到该节点。您有两种选择
在安装之前预先创建
bifrostfirewalld 区域,并将 SSH 服务添加到该区域。通过在安装时提供
firewalld_internal_zone=public来使用public区域。
是使用集成的 DHCP 服务器还是外部 DHCP 服务。
DHCP 的 IP 地址池(必须在所选网络接口上配置的网络内)。
您是否希望服务通过 Keystone 进行身份验证。
对于将注册到 Bare Metal 服务的每台机器,您需要
您将用于控制机器的管理技术(IPMI、Redfish 等)。请参阅 裸机驱动程序 以获取指导。
其管理控制器的 IP 地址或主机名(BMC)。
管理控制器的凭据。
机器用于 PXE 启动的 NIC 的 MAC 地址(对于 IPMI 是可选的)。
它是否以 UEFI 或传统(BIOS)模式启动。
注意
某些硬件类型(如
redfish)可以强制所需的启动模式,而其他类型(如ipmi)要求在 ironic 和机器上设置相同的启动模式。
所需的软件包¶
要开始使用 Bifrost,您需要 Python 3.6 或更高版本以及 git 源代码管理工具。
在 CentOS/RHEL/Fedora 上
sudo dnf install -y git python3
在 Ubuntu/Debian 上
sudo apt-get update
sudo apt-get install -y python3 git
在 openSUSE 上
sudo zipper install -y python3 git
启用其他仓库(仅限 RHEL)¶
必须启用 extras 和 optional dnf 仓库才能满足 bifrost 的依赖项。要检查
sudo dnf repolist | grep 'optional\|extras'
要查看仓库状态
sudo dnf repolist all | grep 'optional\|extras'
输出将如下所示
!rhui-REGION-rhel-server-debug-extras/8Server/x86_64 Red H disabled
rhui-REGION-rhel-server-debug-optional/8Server/x86_64 Red H disabled
rhui-REGION-rhel-server-extras/8Server/x86_64 Red H disabled
rhui-REGION-rhel-server-optional/8Server/x86_64 Red H disabled
rhui-REGION-rhel-server-source-extras/8Server/x86_64 Red H disabled
rhui-REGION-rhel-server-source-optional/8Server/x86_64 Red H disabled
使用仓库名称(减去版本和架构)来启用它们
sudo dnf config-manager --enable rhui-REGION-rhel-server-optional
sudo dnf config-manager --enable rhui-REGION-rhel-server-extras
启用 EPEL 仓库(RHEL 和 CentOS)¶
在 RHEL 或 CentOS 上构建基于 Debian 或 Ubuntu 的镜像需要一些额外的预安装步骤,以便访问 EPEL 仓库中包含的附加软件包。
请参阅 官方 wiki 页面 进行安装和配置。
注意
使用 EPEL 仓库可能会导致软件包管理器安装不兼容的软件包。在使用启用 EPEL 的系统时应小心。
克隆 Bifrost¶
Bifrost 通常从 git 安装
git clone https://opendev.org/openstack/bifrost
cd bifrost
要从特定发布系列安装 Bare Metal 服务(而不是最新版本),请检出相应的稳定分支。例如,对于 2025.1
git checkout stable/2025.1
在虚拟机上测试¶
如果您想在虚拟机而不是真实硬件上尝试 Bifrost,您需要准备一个测试环境。最简单的方法是通过自 Victoria 发布系列以来的 bifrost-cli。
./bifrost-cli testenv
然后不要忘记将 --testenv 标志传递给 bifrost-cli install。
请参阅 测试环境 以获取更多详细信息以及创建虚拟环境的更高级方法(也支持 Ussuri 及更早版本)。
警告
bifrost 的 testenv 默认使用默认的 libvirt 网络。如果您在默认 libvirt 网络内的 VM 内部安装 testenv,您将遇到错误。
使用 bifrost-cli 快速入门¶
自 Victoria 发布系列以来可用的 bifrost-cli 脚本使用推荐的默认值安装 Bare Metal 服务。如果使用 Ussuri 或更早版本或需要完全控制您的环境,请遵循 通过 playbook 安装。
使用它就像
./bifrost-cli install \
--network-interface <the network interface to use> \
--dhcp-pool <DHCP start IP>-<DHCP end IP>
例如
./bifrost-cli install --network-interface eno1 \
--dhcp-pool 10.0.0.20-10.0.0.100
注意
请参阅 了解您的环境 以获取有关两个必需参数的指导。
如果安装在虚拟环境中,请跳过这两个参数
./bifrost-cli install --testenv
此外,以下参数可能很有用
--hardware-types要启用的硬件类型的逗号分隔列表。
--enable-keystone是否启用与 Keystone 的身份验证。
--enable-tls在 API 端点上启用自签名 TLS。
--release如果使用 Bifrost 的稳定版本,通常会从 git 检出检测到相应的 Ironic 版本。如果不可能(例如,您使用的是来自 tarball 的 Bifrost),请使用此参数提供匹配的版本。
注意
使用 Bifrost 安装旧版本的 Ironic 可能会有效,但不能保证。
--enable-prometheus-exporter启用 Ironic Prometheus Exporter 服务。
--uefi/--legacy-boot默认情况下以 UEFI 或 BIOS 模式启动机器(默认为 UEFI)。
--disable-dhcp禁用集成 DHCP 服务器的配置,允许使用外部 DHCP 服务。
--develop以开发模式安装服务,以便
/opt中仓库的更改会立即反映在环境中。
有关更多详细信息,请参阅内置文档
./bifrost-cli install --help
安装生成的 Ansible 变量存储在 JSON 文件中(默认情况下为 baremetal-install-env.json),应通过 -e 标志传递给后续的 playbook 或命令调用。
构建自定义 Ironic Python Agent (IPA) 镜像¶
Bifrost 支持用户使用 diskimage-builder 和 ironic-python-agent-builder 构建自定义 IPA ramdisk。为了利用此功能,必须将 download_ipa 设置为 false,并将 create_ipa_image 设置为“true”。默认情况下,安装 playbook 将构建基于 Debian Bookworm 的 IPA 镜像,如果磁盘上不存在预先存在的 IPA 镜像。如果您希望显式设置要传递给 diskimage-create 的特定发布版,则可以设置 dib_os_release 设置,以及 dib_os_element。
如果您希望在 IPA 磁盘镜像中包含额外的元素,例如自定义硬件管理器,您可以将变量 ipa_extra_dib_elements 作为以空格分隔的元素列表传递。默认情况下,它是一个空字符串。
使用 Bifrost¶
安装完成后,导出以下环境变量以配置 bare metal 客户端以使用生成的 clouds.yaml 中的 bifrost 云配置(有关详细信息,请参阅 使用 baremetal CLI)
注意
在使用 bifrost 的虚拟环境中,请确保激活它。
source ~/bifrost/env/bin/activate
export OS_CLOUD=bifrost
现在您可以直接使用 Ironic,请参阅 独立指南 以获取更多详细信息。或者,您可以使用提供的 playbook 来自动执行某些常见操作 - 请参阅 操作指南。