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 到该节点。您有两种选择

    1. 在安装之前预先创建 bifrost firewalld 区域,并将 SSH 服务添加到该区域。

    2. 通过在安装时提供 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)

必须启用 extrasoptional 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。

警告

如果使用 Keystone,请参阅 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 来自动执行某些常见操作 - 请参阅 操作指南

高级主题