2023.1 系列发布说明

2023.1-eom

弃用说明

  • 不再在 CI 中测试 Fedora 的支持,并且将在不久的将来从代码中移除。

错误修复

  • 通过添加一个安装和配置 logrotate 服务的角色,修复了 Ironic 日志缺乏日志轮转的问题。

  • 修复了一个问题,在默认的 Bifrost 配置中,当使用 localhost 作为数据库地址时,在线数据迁移无法执行。详情请参阅 LP#2036772

16.0.0

新特性

  • bifrost 现在引入了 user_data content 变量,允许用户提供自定义的 cloud-config 文件。例如:.. code-block:: yaml

    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”

  • 现在可以使用 grub 作为 iPXE 的替代方案进行 PXE 网络启动。Grub 通过签名后的 shim 加载,因此可能允许在启用安全启动的情况下进行端到端的自动化部署。

    要使用 grub 网络启动,请将变量 default_boot_interface 设置为 pxe 并部署节点时使用 pxe 启动接口。

  • Ubuntu Jammy (22.04) 现在支持作为基础操作系统。

升级说明

  • 变量 enable_uefi_ipxe 已被移除,取而代之的是检查 enabled_boot_interfaces 是否包含 ipxe

15.0.0

新特性

  • 现在支持 Ansible 5.x 并且默认使用。

升级说明

  • 移除对使用 Python 3.6 的任何发行版的支持,因为 OpenStack 不再支持它。这包括

    • CentOS Stream 8、RHEL 8 及其衍生版本。

    • openSUSE Leap 15(所有次要版本)。

    • Debian 10 “Buster”。

    • Ubuntu 18.04 “Bionic”。

  • Bifrost 不再支持 Python 3.6 和 3.7,请使用版本 3.8 或更高版本。

弃用说明

  • 为了与其他变量保持一致,变量 include_dhcp_server 已被移除,改为 enable_dhcp

  • Ansible 模块 os_ironic_node_info 已被弃用。请改用 openstack.cloud.baremetal_node_info

错误修复

  • 修复了一个升级 MariaDB 后 MariaDB 数据库表未被修复的问题。

  • Bifrost 不再在主机系统上安装 GRUB2 和 shim,从而避免了与本地引导加载程序相关的潜在问题。

  • 修复了一个强制启用 SELinux 导致 tftp_boot_folder 中的文件无法被 dnsmasq 读取的问题。通过确保 ironic_tftp_master_path 中的文件具有 SELinux 上下文 tftpdir_t 来解决此问题。

  • 修复了 redeploy-dynamic playbook 在使用 TLS 和其他非默认云设置时的问题。

  • 修复了启用 Keystone 的 Yoga 的升级问题,在 ansible-collections-openstack 发布版本 2.0.0 之前保留 Yoga 版本的 openstacksdk。

14.0.0

新特性

  • 添加了一个新的 CLI 命令 ./bifrost-cli deploy,该命令运行 deploy playbook,可以选择指定自定义镜像。

  • 添加了一种新的方法来为 bifrost-deploy-nodes-dynamic 角色指定自定义镜像,方法是设置新的参数 deploy_image_sourcedeploy_image_checksum

  • 允许通过设置新的参数 deploy_config_drive 来自定义 bifrost-deploy-nodes-dynamic 角色的 configdrive URL 或 JSON。

升级说明

  • 参数 network_mtuipv4_nameserveripv4_gateway 不再具有默认值。如果需要,请显式指定它们。

  • 当启用 TLS 时,Ironic 和 Inspector 现在通过 /run/ironic 目录中的 unix 套接字提供其 API,而不是 localhost 上的私有 TCP 端口。公共 API 由 Nginx 提供。

弃用说明

  • bifrost-deploy-nodes-dynamic 角色的 deploy_image 参数已被弃用,以支持 deploy_image_path

错误修复

  • 当有多个 SSH 公钥可用时,优先选择现代算法而不是 RSA。这修复了 CentOS 9 上的 Cirros 登录问题。

  • 修复了 Bifrost 库存插件,使其不再设置 network_interface 变量,因为它与含义不同的 Bifrost 变量冲突。

  • 修复了当 uuid 未在库存文件中设置时 bifrost-configdrives-dynamicbifrost-deploy-nodes-dynamic 的问题。

13.0.0

新特性

  • 添加了设置根文件系统 UUID 的支持,该 UUID 可以在基于软件 RAID 的根磁盘设备上部署。

  • Bifrost 现在启动单个 Ironic 进程,而不是单独的 API 和 conductor。

  • bifrost-cli install 命令现在生成一个环境变量文件(默认情况下为 bifrost-install-env.json,可以使用 --output 参数更改)其中包含安装期间使用的变量。

  • 添加了对在 CentOS Stream 9 上运行 bifrost 的基本支持。

  • 添加了一个布尔变量 enable_epel,允许为 CentOS Stream 8/9 启用 epel 仓库。由于我们仅在构建基于 debian 的 IPA 镜像时才需要它,因此默认值设置为 install_dib,其安装取决于所使用的 dib_os_element 的值。

  • TLS(启用时)现在由 Nginx 以代理模式处理,而不是服务本身。

已知问题

  • 升级逻辑中的一个错误可能导致旧的 ironic-apiironic-conductor 服务仍在运行。已修复此问题,但如果您已经升级到受影响的版本,则需要使用 systemctl 手动停止这些服务。

升级说明

  • 升级时,现有的 API 和 conductor 服务将被禁用,并启动一个单独的组合 ironic 进程。

  • 在您的 inventory 文件中,请从 driver_info 中删除子部分 powerconsolemanagement。相反,将所有字段直接放在 driver_info 下。

  • 移除了已弃用的 Ansible 模块 os_ironic_facts

  • JSON RPC 现在仅在 localhost 上可用,且没有 TLS。如果您需要在网络上公开它(即,您在多节点设置中使用 Bifrost),请将 expose_json_rpc 设置为 true

  • HTTP 启动目录的位置已更改为 /var/lib/ironic/httpboot。请避免在升级期间进行清理或部署,否则 PXE 启动可能会失败,直到 Ironic 重建 iPXE 配置为止。

    任何自定义镜像将不会从旧位置 /httpboot 迁移,如果需要,请手动迁移它们。升级后可以删除旧位置。

  • TinyIPA(基于 TinyCoreLinux 的 IPA 镜像)不再默认使用。取而代之的是,由 Ironic 社区发布的镜像 ,除非将 use_tinyipa 设置为 true

    TinyIPA 镜像更轻量级,但不适合实际的裸机,因为它缺少驱动程序。

  • PXE 启动目录的位置已更改为 /var/lib/tftpboot

  • 对 Bifrost 虚拟环境(默认情况下为 /opt/stack/bifrost)的修改现在需要 sudo,因为该目录现在由 root 拥有。

  • 已弃用且无法正常工作的变量 ANSIBLE_INSTALL_ROOT 不再受支持。

弃用说明

  • CentOS Stream 8 和 Python 3.6 支持现在已被弃用,从 Z 周期开始将提供尽力支持。

错误修复

  • Bifrost 不再默认使用 driver_info 下的子部分 powerconsolemanagement

  • 密码文件 (htpasswd) 不再具有世界可读权限。

  • 确保镜像缓存目录位于与 PXE/HTTP 目录相同的文件系统上,以避免“Invalid cross-device link”错误。

  • keystone 配置不再可被全局读取。

  • keystone 进程现在以 keystone 用户身份运行,而不是 nginx 用户。

  • TFTP 和 HTTP 目录默认情况下不再可被全局读取。设置 boot_folder_permissions 以覆盖。

  • Ironic Prometheus Exporter 现在以 ironic 用户身份运行,而不是 root。

  • 如果未启用,Ironic Prometheus Exporter、Ironic Inspector、Staging Drivers 和 Keystone 将不再被克隆。

  • 实际尊重 prometheus_exporter_source_install 变量。

  • Bifrost 虚拟环境(默认情况下为 /opt/stack/bifrost)不再由启动安装的普通用户拥有(因此不可写)。

12.0.0

新特性

  • 现在支持 Ansible 4 并且默认使用。

  • Debian Bullseye (11.0) 现在支持作为基础操作系统。

升级说明

  • 不再安装单独的 Keystone admin 服务,升级时将被禁用。可以使用主 Keystone 服务代替。

  • Bifrost 现在默认使用 UEFI。将 default_boot_mode 设置为 bios 或使用 --legacy-boot CLI 标志覆盖。

弃用说明

  • 使用传统启动已被弃用,尽管我们目前没有计划删除对其支持。请考虑使用 UEFI。

  • 使用 Python 3.6 的发行版(即 Ubuntu Bionic、Debian 10 “Buster” 和 openSUSE 15.2/15.3)的支持已被弃用,并且可能随时被删除。

  • Fedora 的支持已被弃用,请使用 CentOS Stream 8。

错误修复

  • 修复了 Red Hat 的过时的 grub 和 shim efi 二进制文件路径,使其位于 EFI/redhat 下。

  • 修复了在未使用 firewalld 的系统上 PXE 的 iptables 规则(使用 UDP/67 和 UDP/69 端口代替 TCP/68 和 TCP/69)。

其他说明

  • 不再安装 /etc/ironic/boot.ipxe,而是依赖于 Ironic 生成的启动脚本。

  • redfish 模拟器现在默认启用身份验证。

11.2.0

新特性

  • 添加了通过新的 dhcp_pool_mask 参数使用 dnsmasq 作为 DHCP 中继目标的支持。

  • 根据 enabled_hardware_types 自动配置 enabled_raid_interfaces

  • 添加了通过新的 enabled_raid_interfaces 参数手动指定启用的 raid 接口的支持。

  • 支持通过新的参数 tftp_boot_folder 自定义 TFTP 目录。

  • 添加了一个新的角色 bifrost-uwsgi-install,封装了 uWSGI 配置逻辑。

  • 当启用 TLS 支持时,虚拟媒体镜像现在受到 TLS 的保护。

已知问题

  • Fedora 34 的加密设置可能会阻止其通过 SSH 登录到 CirrOS。CirrOS 镜像不应在生产环境中使用。如果此问题影响您的开发环境,请临时降低加密配置文件

    sudo update-crypto-policies --set LEGACY
    

升级说明

  • Fedora 34 现在在 CI 中进行了测试。Fedora 32 及更高版本应该可以工作,但不再进行测试。

  • admin Keystone 端点将从使用端口 35357(单独的 admin API)升级到使用端口 5000(默认 Identity API)。

  • 切换 TFTP 处理从 Xinetd 到 dnsmasq,必须启用 dnsmasq 才能使 TFTP 启动工作。

  • Keystone 服务现在作为单独的 systemd 服务 uwsgi@keystone-publicuwsgi@keystone-admin 运行。独立的 uwsgi 服务不再使用,并在升级时被禁用。

  • 如果 enable_tlstrue,则 Redfish、iDRAC-Redfish 和 iLO 的虚拟媒体镜像现在通过 Ironic 的 TLS 证书通过 TLS 提供。如果这不是期望的,请将新的选项 vmedia_enable_tls 设置为 false

    可以使用新的 file_url_port_tls 选项配置新的服务器端口。

弃用说明

  • 单独的 Keystone admin API(在端口 35357 提供服务)已被弃用,将在未来的版本中删除。请更新您的应用程序,仅将端口 5000 用于 Keystone 操作。

错误修复

  • 当使用 copy_from_local_path 时,升级前会删除目标路径。

  • 通过切换到 dnsmasq 进行 TFTP 启动来修复 Fedora 34 支持,从而取代了已删除的 Xinetd。

  • 修复了 os_ironic_node_info 模块中 TLS 和其他当前身份验证参数的支持。该实现使用 OpenStack Ansible 集合中的实用程序。

其他说明

  • 将管理 Nginx 的通用代码移动到一个新的角色 bifrost-nginx-install

11.1.0

新特性

  • 根据 enabled_hardware_types 自动配置 enabled_vendor_interfaces

  • 通过新的 enabled_vendor_interfaces 参数添加了手动指定启用的厂商接口的支持。

  • 自动配置 ilo5 硬件类型所需的管理接口。

  • 添加了 ipa_download_headers 变量来控制下载 IPA 镜像时使用的 HTTP 标头。

  • 现在可以通过新的 ilo_kernel_params 变量设置 ilo-virtual-media 启动接口的内核参数。

错误修复

  • 添加了 ilo-virtual-media 启动接口所需的默认内核参数。

11.0.0

升级说明

  • 将 Diskimage Builder (DIB) 的软件包依赖项安装从 bifrost-create-dib-image 角色移动到 bifrost-install-ironic 角色。这提供了安装和镜像创建之间更清晰的分离。

  • 移除了对已弃用的 iscsi 部署接口的支持。

错误修复

  • 修复了由于缺少 squashfs-tools 软件包而导致构建 Ubuntu 镜像时发生的故障。

10.2.0

新特性

  • ./bifrost-cli install 添加了 --disable-dhcp 参数,以禁用集成的 DHCP 配置。

  • 即使在 inventory_dhcpfalse 时,动态 DHCP 库存 hostsdir 现在默认创建并启用。

升级说明

  • inventory_dhcptrue 时,默认不再在 /etc/dnsmasq.d/bifrost.hosts.d 中创建额外的 DNS hosts 目录。设置新的变量 dnsmasq_additional_hostsdir 以保持之前的行为(您需要 dnsmasq_enable_dns=true 才能实际使用它)。

弃用说明

  • 参数 disable_dnsmasq_dns 已被弃用,取而代之的是新的参数 dnsmasq_enable_dns

其他说明

  • 默认情况下不再将 --no-cache-dir 传递给 pip。

10.1.0

新特性

  • 添加了一个新的命令 bifrost-cli enroll 以简化节点注册。

  • 现在默认启用 ramdisk 部署接口。

  • 支持自动配置 idrac 硬件类型所需的硬件接口。使用 Redfish 实现。

升级说明

  • 不再默认启用已弃用的 iscsi 部署接口,使用 enabled_deploy_interfaces 来覆盖。

  • 通过 ironic-inspector 的节点发现现在默认禁用。如果您希望启用它,请将 enable_inspector_discovery 设置为 true 并重新执行安装 playbook。

  • 默认在 ironic 中启用调试日志记录,将新的 ironic_debug 参数设置为 false 以覆盖。

错误修复

  • 修复了快速通道后的检查:fast_trackpower_off_after_inspection 选项现在被正确处理。

  • 修复了将带有空格的参数传递给 bifrost-cli 的问题。

10.0.0

新特性

  • 将新的布尔参数 ipa_add_ssh_key 设置为 True 以配置使用当前用户 SSH 密钥登录 ramdisk 的能力。仅适用于使用 dynamic-login 元素构建的基于 DIB 的 ramdisk。

  • Ansible 2.10 现在受支持并默认使用(2.9 仍然受支持)。

  • ./bifrost-cli testenv 添加了 --uefi 参数,以使测试 VM 以 UEFI 模式启动。

  • ./bifrost-cli install 添加了 --uefi 参数,以使 ironic 默认使用 UEFI。

  • 在传统(BIOS)启动模式下启用对 redfish-virtual-media 的支持。

  • 添加了对在 VM 中启用 UEFI 安全启动的情况下测试 bifrost 的支持。需要使用 GRUB2 在主机机器上识别的密钥签名的内核的 IPA ramdisk。

  • 添加了对在测试环境中模拟 UEFI 裸机机器的支持。传递 default_boot_mode=uefi 以启用。

  • 添加了对 UEFI 模式下 Redfish 虚拟媒体的支持。

已知问题

  • 由于 TFTP 问题,Ubuntu Focal 上使用网络启动进行 UEFI 测试不起作用。

升级说明

  • 根据 CentOS 项目的 公告,Bifrost 已切换到 CentOS Stream 进行测试。常规 CentOS 不再在 CI 中进行测试,这意味着它和 RHEL 只能间接进行测试,并以尽力为基础的方式支持。

  • 标记为自 2015 年以来为遗留的 bifrost-create-bootable-image 角色已被删除。请使用 diskimage-builder 或其他外部工具来构建您的镜像。

  • Bifrost 现在默认使用 HTTP 基本身份验证。生成的凭据将存储在 ~/.config/openstack/clouds.yaml 中。使用 noauth_mode=trueenable_keystone=false 禁用身份验证。

弃用说明

  • Fedora 30 已达到使用寿命终点,不再明确测试。其支持将在未来的某个版本中删除。

  • openSUSE Leap 15.1 即将达到使用寿命终点,不再明确测试。其支持将在未来的某个版本中删除。

错误修复

  • 取消设置生成的 openrc 中的 OS_CLOUD 变量。

  • 现在始终在生成的 openrc 中设置 OS_AUTH_TYPE

  • 在 Fedora 32 及更高版本上使用 FirewallD 以修复防火墙问题。

  • 修复了在使用 BIFROST_INVENTORY_SOURCE=ironic 时 Bifrost 库存插件的问题。所有节点字段现在都作为事实返回,就像在 Ussuri 及更早版本中一样。有关详细信息,请参阅 story 2008394

  • 将 ironic-lib rootwrap.d 过滤器复制到正确的位置。

  • 正确复制升级时的 rootwrap.d 过滤器。

  • 修复了 SELinux 上下文未应用于 /httpboot 和 /tftpboot。这使得 ironic_policy 模块变得不必要,并且已被删除。

  • 确保校验和文件具有正确的所有权。

  • 在不使用 firewalld 的系统(例如 Ubuntu)上,显式打开端口 68 和 69 的防火墙。

  • 修复了在运行验证时 PATH 始终包含虚拟环境的问题。

其他说明

  • 已将 Fedora 32 和 openSUSE Leap 15.2 添加到受支持的操作系统列表中。

9.0.0

新特性

  • 添加了支持安装 Ironic Prometheus Exporter。可以通过 bifrost-cli 使用 --enable-prometheus-exporter 选项来完成,或者在部署时设置 enable_prometheus_expoter=True

  • 现在,network_interface 的第一个 IPv4 地址用于在 clouds.yamlopenrc 中 ironic 和 ironic-inspector API URL,而不是 localhost。使用 ironic_api_urlironic_inspector_api_url 来覆盖。

  • 现在 bifrost-keystone-client-config 角色验证使用生成的配置的 CLI 访问是否实际有效,使用 skip_validation=false 来禁用。

  • 通过设置 enable_tls=true 并且可选地 generate_tls=true 支持 TLS 配置。相应的 bifrost-cli 参数是 --enable-tls(仅自动生成的证书)。

  • 现在 bifrost-ironic-install 角色验证服务是否已成功启动,使用 skip_validation 来禁用。

已知问题

  • 由于 Ansible 依赖关系,Bifrost 仅适用于使用 --system-site-packages 创建的虚拟环境。

  • 在使用 Keystone 进行身份验证时,如果证书位于非标准位置,则可能无法在启用后禁用 TLS。

  • 由于升级限制,可能无法在从以前的版本升级时启用 TLS。先进行升级,然后在单独的安装步骤中启用 TLS。

升级说明

  • 不再支持 use_public_urls 参数,只需提供 public_ip 即可。

  • Bifrost 不再将 ironic 和 ironic-inspector 端点添加到公共 firewalld 区域,操作员必须显式地执行此操作,如果需要外部访问。

  • 已删除对遗留 CSV 库存格式的支持,现在仅支持 JSON 和 YAML。

  • 已删除对安装和使用 RabbitMQ 的支持。

  • 已删除将内省数据存储在 nginx 中的支持。在 ironic-inspector 开始支持将数据存储在数据库中之前,这很有用,而现在数据库是默认设置。

  • 已从 bifrost-configdrives-dynamic 角色中删除了不再受支持的 OpenStack MetaData 版本 2012-08-10。现在支持的最新元数据版本是 2015-10-15。

  • 已删除弃用的参数 node_network_info,请使用 node_network_data 代替。

  • 为确保无论使用哪个 Ansible 版本,都能使“/httpboot”的内容可供世界读取,已添加对 bifrost ansible playbook 中 get_url 调用设置文件访问权限的显式设置。

  • 默认情况下,现在使用打包的 iPXE ROM,在 openSUSE 上设置 download_ipxe=true 以覆盖。

  • Bifrost 不会再为您杀死所有正在运行的 dnsmasq 进程。如果您有未由 systemd 管理的 dnsmasq 进程,则必须自行停止它们。

  • 不再支持在虚拟环境之外进行安装。已删除参数 enable_venv

错误修复

  • 修复了一个问题,即 bifrost-create-dib-image 角色会覆盖任何现有的 ELEMENTS_PATH 环境变量值。此修复会将任何现有的 ELEMENTS_PATH 值附加到角色中设置的路径。

  • 对 keystone 端点配置的更改现在会自动反映在现有的端点上。

  • 使用 copy_from_local_path 复制的存储库现在得到正确更新。

  • 使用 copy_from_local_path 复制存储库时,确保它们始终由本地用户拥有。以前,某些存储库可能由 root 拥有。

  • 正确更新重大升级后的 IPA 镜像校验和。

  • 自动在 CentOS/RHEL 上启用 firewalld 中的 DHCP 和 TFTP 服务。

  • 不再修改 public firewalld 区域,而是创建一个新的区域 bifrost 并将 network_interface 放入其中。设置 firewalld_internal_zone=public 以恢复到以前的行为。

  • 使 /var/lib/ironic 及其镜像子目录可被 nginx 读取。这对于使用镜像缓存是必需的。

  • 修复了 PXE 和 iPXE 启动文件的 ACL,以确保它们可供世界读取。

  • 解决了 ansible 版本 2.9.12 和 2.8.14 中,使用 get_url 调用下载的文件上隐式设置文件权限导致权限过于严格的问题。这导致在尝试读取“/httpboot”的内容时出现访问被拒绝的情况,并导致部署失败。

  • 确保存储库始终由调用用户拥有。

  • 删除了 test_vm_network_enable_dhcp 选项,并禁用了 libvirt 网络上的 DHCP,而不是无条件杀死机器上的所有 dnsmasq 进程。

  • /tftpboot 添加了正确的 SELinux 上下文。

其他说明

  • 已删除文件 env-vars。它包含仅适用于无身份验证模式且仅适用于 ironic 本身的变量。使用生成的 clouds.yamlopenrc 文件位于主目录中。

  • Ubuntu 的主要受支持版本现在是 20.04 (Focal)。Ubuntu 18.04 (Bionic) 仍然受支持,但可能会在未来的版本中删除。

  • 即使在无身份验证模式下,Ironic JSON RPC 也始终经过身份验证。

  • 删除了不再使用的 transform_boot_image 变量。

8.3.0

新特性

  • 添加了通过新的 agent 电源接口和 manual-management 硬件类型配置无凭据部署的支持。

  • 现在可以通过 -e / --extra-vars 标志将额外的参数传递给 bifrost-cli。格式与 ansible-playbook 相同。

  • 元数据清理现在默认启用,将 cleaning 设置为 false 以完全禁用。

  • 要启用完全磁盘清理,请将 cleaning_disk_erase 设置为 true

  • 新的参数 default_boot_mode 允许指定默认启动模式:uefibios

  • 将新的参数 developer_mode 设置为 true 以使从源代码安装的所有软件包都以 --editable 标志安装。相应的 bifrost-cli 参数是 --develop

  • 新的变量 git_url_root 允许覆盖所有仓库的根 URL(例如,将默认的 https://opendev.org 更改为本地路径)。

  • 现在支持 API 服务的 HTTP 基本身份验证,除了无身份验证和 Keystone 之外。它通过将 noauth_mode=falseenable_keystone=false 一起设置来触发。

  • 使用 bifrost-cli 安装现在在禁用 Keystone 时使用 HTTP 基本身份验证。

  • 用于检查的 ramdisk 日志现在默认存储在 /var/log/ironic-inspector/ramdisk 中。

  • 如果启用了 keystone_lockout_security_attempts,则帐户保持锁定的时间现在由新的参数 keystone_lockout_duration 调节(默认为 1800 秒)。

  • 部署/清理 ramdisk 日志现在始终默认存储,使用 ironic_store_ramdisk_logs 进行覆盖。

  • 添加了从 $VENV/collections 目录创建符号链接,该目录包含 ansible collections 到 bifrost 的 playbooks 子目录。这在 env-setup.sh 脚本中完成。

  • bifrost-create-vm-nodes 角色现在支持 redfish 模拟,将 test_vm_node_driver=redfish(或 --driver=redfish 用于 bifrost-cli testenv)设置为使用。

  • 新的参数 default_boot_mode 允许指定默认启动模式:uefibios

升级说明

  • 变量 ci_testing 不再被角色考虑。如果需要 Bifrost 从其预缓存位置复制仓库,请使用现有的 copy_from_local_path

  • 如果使用 cleaning=true 启用完全磁盘清理,现在还需要将 cleaning_disk_erase=true 设置为 true。省略它将只会启用元数据清理。

  • 现在所有服务默认使用 *journald* 日志记录,ironic-api.logironic-conductor.log 不再填充。使用 ironic_log_dirinspector_log_dir 进行覆盖。

  • 部署/清理 ramdisk 日志现在默认存储在 /var/log/ironic/deploy 中。

  • inspector_user 用户不再默认创建。请使用 bifrost_user 代替。

  • 如果您依赖于默认密码(例如,数据库或 keystone 密码),它们将在升级时更改。如果您想避免这种情况,请使用显式值。

  • OpenStackSDK 现在默认从 PyPI 安装,将 openstacksdk_source_install=true 设置为 true 以覆盖。

  • 以前,如果定义了 skip_install 变量,无论其值如何,安装都会被完全跳过。现在已修复此问题,并且只有当 skip_install 被定义且等于 true 时,安装才会被跳过。

弃用说明

  • 不推荐通过 inspector[discovery] 提供 inspector 发现参数,请使用显式变量代替。

  • Bifrost 将在未来默认切换到 HTTP 基本身份验证。如果您想避免这种情况,请明确将 noauth_mode 设置为 false

  • 参数 ironic_db_password 已弃用,请使用 service_password 设置服务之间使用的密码,或覆盖整个 ironickeystone 对象。

安全问题

  • 对 inspector 日志目录使用模式 0700,以防止它们被世界读取。

  • 在使用 Keystone 时,不再在尝试登录失败 3 次后锁定用户帐户。这会创建一个非常容易利用的拒绝服务问题。使用 keystone_lockout_security_attempts 重新启用(不推荐)。

  • 对 ironic 日志目录使用模式 0700,以防止它们被世界读取。

  • 现在默认生成随机密码,而不是使用常量。可以使用以前的相同参数来覆盖它们。

错误修复

  • 不再克隆具有相应 *_source_install 变量设置为 false 的仓库。

  • 由于它们发布非常不频繁(通常每个周期一次),Ironic Staging Drivers 现在默认从源代码安装。

  • 符号链接的添加使 bifrost playbooks 独立于 ANSIBLE_COLLECTIONS_PATHS 环境变量,该环境变量在某些环境中未可靠设置。

  • 删除对 Fedora OS 系列的 libselinux-python 的依赖。此软件包不再存在于 Fedora 32 中,并导致安装失败。可以安全地删除它,因为它仅与 python2 一起使用。

  • 在启用 SELinux 的系统上,启用 nginx 读取符号链接。修复实例的网络启动。

其他说明

  • 已删除角色 bifrost-openstack-ci-prep。它仅在上游 CI 上下文中使用了,不再需要。

  • 变量 ci_testing_zuul 不再使用或设置。

  • 默认使用的 cirros 版本现在是 0.5.1(而不是 0.4.0)。

  • Bifrost 现在使用 openstack.cloud 集合中的等效模块。模块的更改如下所示。

    • os_client_configconfig

    • os_ironicbaremetal_node

    • os_ironic_inspectbaremetal_inspect

    • os_ironic_nodebaremetal_node_action

    • os_keystone_roleidentity_role

    • os_keystone_servicecatalog_service

    • os_useridentity_user

    • os_user_rolerole_assignment

8.2.0

新功能

  • 现在可以使用 bifrost 云使用内省命令,即使在无身份验证模式下也是如此。

  • Debian Buster 现在支持作为基础操作系统。

  • 配置默认部署和救援内核/ramdisk,在 driver_info 中设置它们现在是可选的。

  • Ubuntu Focal (20.04) 现在支持作为基础操作系统。

  • 如果 enabled_bios_interfacesenabled_boot_interfacesenabled_management_interfacesenabled_power_interfaces 为空(默认),则 enabled_hardware_types 的值现在派生自它们。

  • 添加了一个新的参数 internal_ip,用于指定节点用于访问 ironic 和 HTTP 服务器以及在禁用 keystone 时的跨服务交互的 IP 地址。默认情况下,使用 network_interface 的 IPv4 地址。

  • manual-management 硬件类型现在默认启用。它可以与不具有受支持 BMC 的硬件一起使用。

  • noop 管理接口现在可以开箱即用地与 ipmiredfish 节点一起使用,以防止 ironic 更改启动设备和顺序。

  • 在创建测试 VM 时,现在生成一个正常的 ironic nodes.json(适用于 baremetal create 命令)。默认位置是 /tmp/nodes.json

  • 为没有显式资源类的已注册节点设置默认资源类。默认为 baremetal,可以通过 default_resource_class 参数更改。

  • Fedora 30 现在支持作为基础操作系统。

  • 添加了两个新参数来控制如何处理现有的 git 检出

    • update_repos 可以设置为 false 以防止更新仓库。

    • force_update_repos 可以设置为 false 以防止 Bifrost 覆盖本地更改。

  • 将 Ansible 的默认版本更改为版本 2.9。

  • 新的变量 use_tinyipa(默认为 true)定义是使用预构建的 tinyIPA 镜像还是使用 DIB 构建的生产就绪的 CentOS 镜像。

升级说明

  • 已删除对 Fedora 早期版本的显式支持。

  • 已删除对 Debian Jessie 的显式支持。

  • 当未启用 keystone 时,不再安装 OpenStackClient。请使用 ironic 原生的 baremetal 命令。例如,而不是

    openstack baremetal node list
    

    只需使用

    baremetal node list
    
  • 不再使用 shade 库,也不默认安装它。

  • 此版本 bifrost 使用的 Ansible 默认版本是版本 2.9。操作员如果直接调用 playbooks 或 roles,可能需要升级。

  • 现在,所有软件包都默认安装在 /opt/stack/bifrost 中的虚拟环境中,而不是系统范围内。

弃用说明

  • 不推荐在 clouds.yaml 中使用 bifrost-inspector 云,请使用主 bifrost 云执行所有命令。

  • 不推荐使用 os_ironic_facts 模块。请使用 os_ironic_node_info,它在“node”参数中返回信息。

  • 不推荐系统范围内安装软件包,未经测试,并且可能在未来版本中删除。

错误修复

  • 修复了在 CentOS 8 下安装 Keystone 的问题。

  • 修复了在具有本地解析的系统上安装失败的问题,默认将 disable_dnsmasq_dns 设置为 True

  • 修复了内省/发现后的快速跟踪部署,通过将正确的 ironic API URL 提供给 ramdisk。

  • 修复了在 CentOS 8 测试环境中部署的问题,通过使用 firewalld 代替 iptables 来允许节点访问 ironic。

  • 为了避免更新时 ironic 和 ramdisk 之间出现差异,ironic-python-agent 镜像现在会在每次运行安装 playbook 时更新。将 update_ipa 设置为 false 可以防止 ramdisk 更新(不推荐),或者将 update_repos 设置为 false 可以禁用任何更新。

其他说明

  • 已正式移除对 Ubuntu Xenial 和 Debian Stretch 的支持(由于过渡到 Python 3.6,Bifrost 从 Ussuri 版本开始就已损坏)。

8.0.0

新特性

  • Bifrost 的默认行为是使用 ironic.conf 的 [deploy]fast_track 选项启用 ironic 的快速模式,这使得 ironic 可以在节点电源已开启且 agent 正在运行时跳过部署的电源循环序列,这通常是独立部署的工作方式。

  • Bifrost 的默认操作模式现在不再在节点检查完成后关闭节点。这使得 ironic-python-agent 保持运行,并最终允许在遵循典型使用路径时跳过完整的启动序列进行部署。

    可以通过将 power_off_after_inspection 设置为 true 来禁用此设置并恢复之前的行为。此设置映射到 ironic-inspector.conf 的 [processing]power_off 设置和 ironic.conf 的 [inspector]power_off 设置。

升级说明

  • Ansible 的默认版本变为 2.8,取代了已 EOL 的 2.6 版本。此版本保证了完整的错误修复和安全补丁,并且对 Python 3.x 具有更好的支持。

  • 已停止支持 Python 2.7。Bifrost 支持 Python 2.7 的最后一个版本是 OpenStack Train。Bifrost 现在支持的 Python 最低版本是 Python 3.6。

  • 使用 DEFAULT_PIP_ANSIBLE 变量定义要安装的默认 ansible 版本,但允许使用 pip 识别的模式覆盖它(使用 ANSIBLE_PIP_VERSION),或者使用本地路径或远程 URL(使用 ANSIBLE_SOURCE_PATH)。

  • 由于受限的带内检查的限制,inspector_extra_kernel_options 参数只能包含 key=value 对。使用 extra_kernel_options 提供通用的内核选项。

错误修复

  • 在构建部署 ramdisk 时,使用适当的 ironic-python-agent 分支,而不是无条件地使用 master。设置 ipa_git_branch 以覆盖。

  • inspector iPXE 模板内核命令行参数 ip 已被移除,因为它与 dracut 中的 BOOTIF 不兼容,并且缺少 autoconf 参数。如果没有此更改,CoreOS IPA 镜像将无法启动。更多详细信息请参见 story 2006700

其他说明

  • 我们移除了使用 Ubuntu Xenial 和 CentOS 7 的 CI 作业,转而使用 Ubuntu Bionic 和 CentOS 8 的 CI 作业。

  • 默认的 libvirt 网络接口卡类型已从 virtio 更改为 e1000,以便支持在 Bionic 上进行测试。用户不应遇到任何问题,但是可以使用 bifrost-create-vm-nodes 设置 test_vm_nic 来显式选择 virtio 网络接口卡。

7.0.0

新特性

  • 默认情况下现在启用了 redfish 硬件类型。

  • 当启用检查支持时,内省数据现在默认存储在数据库中。可以使用 ironic-inspector-migrate-data 命令将数据从 nginx 迁移到数据库,例如

    ironic-inspector-migrate-data --from swift --to database --config-file /etc/ironic-inspector/inspector.conf
    

升级说明

  • 已移除弃用的参数 inspector_authironic_auth_strategy。现在从 enable_keystone 中检测它们的值。

弃用说明

  • 配置选项 inspector_store_data_in_nginx 已被弃用,将在未来的版本中移除。现在可以将内省数据存储在数据库中。

错误修复

  • 修复了一个问题,在使用非默认的 ironic_log_dir 值时,部署日志将无法保存。请参阅 Story 2006150

6.1.0

新特性

  • 添加了支持通过新的 use_rabbitmq 变量禁用 RabbitMQ,以支持 JSON RPC(在 ironic 中)和假传输(在 ironic-inspector 中)。

升级说明

  • 使用 diskimage-builder 构建镜像现在默认使用 Debian Stretch,并且所有 CI 测试也已切换到它。

  • 默认情况下不再使用 RabbitMQ,将 use_rabbitmq=true 设置为启用。

错误修复

  • 通过切换到 Debian Stretch(从 Jessie)修复了使用 diskimage-builder 构建镜像的问题。

  • 修复了一个问题,proliantutils 库的版本未受约束,可能导致安装不兼容的库。该版本已固定到 2.8.x。

6.0.0

升级说明

  • 由于仅支持 Python 2,因此移除了 UcsSdk 支持。

错误修复

  • 修复了默认的非测试配置,以移除 UCS 驱动程序,因为它们仅基于 Python2,而 UcsSdk 已停止开发且不再维护。

5.2.0

新功能

  • 通过添加额外的字符串变量 -e private_ip=8.8.8.8,如果 Bifrost 与 Keystone 启用一起使用,将配置私有/内部服务端点以包含此私有 IP 地址,以代替默认值,默认值设置为指向 localhost。

    默认行为保持不变,这意味着服务私有端点将包含对 localhost(即 127.0.0.1)的引用。

  • 通过添加额外的字符串变量 -e public_ip=8.8.8.8,与 use_public_urls=true 结合使用,如果 Bifrost 与 Keystone 启用一起使用,将配置公共服务端点以包含此公共 IP 地址,以代替默认值,默认值设置为指向 localhost。

    默认行为保持不变,这意味着服务公共端点将包含对 localhost(即 127.0.0.1)的引用。

  • 添加了支持使用新的环境变量 BIFROST_NODE_NAMES 从 bifrost 目录中注册或部署特定节点,例如

    export BIFROST_NODE_NAMES=node1,node2,node5

  • 添加了一个新的变量 enabled_deploy_interfaces,它允许用户设置 ironic 中的 enabled_deploy_interfaces 配置选项。

  • 添加了支持安装 openstack 客户端,即使禁用了 Identity 服务。如果禁用了 Identity 服务,则还在 clouds.yml 中创建一个名为 bifrost-inspector 的新云,该云引用 Bare Metal Introspection 服务。

  • 可以使用 ironic_extra_packages 变量指定要与 ironic 一起安装的额外软件包。这对于树外驱动程序特别有用。

  • 添加了对执行 ironic 在线数据迁移的支持。

  • 添加了使用 openstacksdk 库,它正在取代 shade 库,用于使用 Ansible 模块与 OpenStack 服务进行通信。默认情况下,将尝试从源代码安装它。将 openstacksdk_source_install 选项设置为 false 以从 PyPI 安装。

  • 将 Ansible 的默认版本更改为版本 2.6。

  • 通过添加额外的布尔变量 -e use_public_urls=true,如果 Bifrost 与 Keystone 启用一起使用,将配置公共服务端点以包含 Bifrost 运行的节点的公共 IP 地址,以代替默认值,默认值设置为指向 localhost。

    默认行为保持不变,这意味着服务公共端点将包含对 localhost(即 127.0.0.1)的引用。

升级说明

  • 此版本的 bifrost 使用的 Ansible 默认版本是版本 2.6。如果直接调用 playbook 或角色,则操作员可能希望升级。

5.1.0

新特性

  • 通过添加额外的变量 -e ipa_upstream_release=stable-mitaka 例如,部署现在可以使用 https://tarballs.openstack.org/ironic-python-agent/tinyipa/files/ 中所有 ramdisk 和内核镜像,而不是默认的 master

    此外,由于其中一些文件没有关联的 .sha256 校验和,因此下载这些文件现在只会发出“警告”,并且不会在最终摘要中报告为 Ansible 错误。

  • 现在可以使用 partitioning_file 变量指定自定义分区 YAML 文件,该变量包含描述分区布局的 YAML 文件的路径。例如

    - local_loop:
        name: image0
    - partitioning:
        base: image0
        label: mbr
        partitions:
          - name: root
            flags: [ boot,primary ]
            size: 6G
            mkfs:
              type: xfs
              label: "img-rootfs"
              mount:
                mount_point: /
                fstab:
                  options: "rw,relatime"
                  fck-passno: 1
          - name: tmp
            size: 1G
            mkfs:
              type: xfs
              mount:
                mount_point: /tmp
                fstab:
                    options: "rw,nosuid,nodev,noexec,relatime"
          - name: var
            size: 7G
            mkfs:
              type: xfs
              mount:
                mount_point: /var
                fstab:
                  options: "rw,relatime"
          - name: log
            size: 5G
            mkfs:
              type: xfs
              mount:
                mount_point: /var/log
                fstab:
                  options: "rw,relatime"
          - name: home
            size: 1G
            mkfs:
              type: xfs
              mount:
                mount_point: /home
                fstab:
                  options: "rw,nodev,relatime"
    

    有关更多信息,请参阅以下链接:磁盘镜像布局部分 标准分区 LVM 分区

  • 允许填充 dnsmasq 的 NTP 服务器设置。这是可选的,但如果设置了 dnsmasq_ntp_servers``setting is set, it adds a ``dhcp-option=42,dnsmasq_ntp_servers 到生成的 dnsmasq 配置中,用于 bifrost。

  • 存储 nginx 中的内省数据。

    在没有 swift 的情况下,我们现在可以使用 bifrost nginx Web 服务器 - 伪装成对象存储 - 来存储节点的原始和处理后的内省数据。这通过布尔变量 inspector_store_data_in_nginx 进行配置,并且默认情况下已启用。

升级说明

  • 已移除对经典驱动程序的弃用支持。

其他说明

  • 在配置 dnsmasq_ntp_servers 设置时,可以指定多个 NTP 服务器,用逗号分隔。

5.0.0

新特性

  • 现在利用稳定的 Ansible 版本 (2.4)。

  • 用于创建 clouds.yaml 的 bifrost 角色现在还在启用 keystone 时在用户主目录中创建一个 openrc 文件。应使用此文件调用 OpenStack CLI 实用程序并具有正确的凭据。文件位置是 ~/openrc

  • 引入了 enabled_hardware_types 变量以支持使用硬件类型。引入了 default_deploy_interface 变量以支持为新节点设置默认部署方法。默认值为 direct 部署接口。

  • 添加了对 Fedora 25、26 和 27 的支持。

  • 添加了支持调整 bifrost-create-vm-nodes 创建的 VM 的 vCPU 模型。默认 vCPU 模型是 host-model,应该提供最佳性能,同时仅使用 libvirt 了解的 CPU 功能。可以使用 Ansible 变量 test_vm_cpu 更改该模型。

  • 添加了支持修改 bifrost-create-vm-nodes 创建的 VM 的 vNIC 模型。默认 vNIC 模型是 virtio,应该提供最佳性能。可以使用 Ansible 变量 test_vm_nic 更改该模型。

已知问题

  • Bifrost 中的硬件类型支持处于初始阶段。目前,os_ironic ansible 模块尚不了解硬件类型。

弃用说明

  • Ironic 已弃用对经典驱动程序的支持。这些是以前缀 agentpxe 开头的驱动程序。新的默认硬件类型,取代驱动程序,是 ipmi。默认部署接口是 direct,它取代了 agent 驱动程序类型。Bifrost 将在 Rocky 版本周期中移除对经典驱动程序的支持。

错误修复

  • 解决了在各种发行版(如 Centos 7.3 和 Fedora 25)上 setuptools 的问题,其中发货版本太旧而无法构建 python 包。

  • 更改了 SELinux 安全策略的应用方式,从使用命令行工具到利用 Ansible 模块,解决了 Fedora 上较新版本 Ansible 的问题。

4.0.0

新功能

  • bifrost 现在始终写入 clouds.yaml 配置文件,用于 os-client-config,无论是否安装了 keystone。

    这允许统一使用 ironic 相关的 openstackclient 命令,无论是否安装了 keystone,都可以使用以下形式的 openstack 命令:

    openstack --os-cloud bifrost baremetal ...
    
  • 更改了 bifrost-create-vm-nodes 角色,以使用 Ansible 的 virt 模块创建用于 bifrost 测试的虚拟机。这取代了用于创建虚拟机的嵌入式 bash 脚本。因此,bash 脚本中存在的所有变量现在都可以作为默认角色变量使用,并且可以通过标准的 Ansible 方法进行覆盖。

    为了保持向后兼容性,一些变量仍然支持使用 shell 变量,但不推荐这样做,应避免使用。

  • 允许配置 inspector 处理钩子。

    现在可以通过变量 inspector_processing_hooks 配置 ironic inspector 使用的内省数据处理钩子集合,默认情况下使用 inspector 的默认列表。

  • 允许在 inspector PXE 配置中指定额外的内核参数。

    Ironic Python Agent (IPA) 中的许多可选功能通过内核命令行参数配置,例如 ipa-collect-lldp

    现在可以使用变量 inspector_extra_kernel_options 指定额外的内核参数,用于在检查期间由 IPA ramdisk 使用。

  • 允许在配置的实例中设置多个 nameserver。ipv4_nameserver 设置现在可以接受字符串或字符串列表,从而允许填充所有所需的 nameserver。

  • 允许配置日志目录

    在某些情况下,能够配置 bifrost 服务写入日志文件的目录很有用。

    现在可以使用变量 ironic_log_dirinspector_log_dirnginx_log_dir 分别配置 ironic、inspector 和 nginx 的日志目录。

  • Bifrost 现在支持定义 ironic 和 ironic-inspector 的特定数据库服务器、用户名、密码和数据库名称。

  • 如果数据库的主机未设置为 localhost,则将跳过数据库和用户创建等操作。此功能存在于 ironic、ironic-inspector 和 keystone 的引导程序中,适用于适用的初始显式数据库模式创建步骤。

  • Bifrost 移除了对 Ironic 的基于 SSH 的电源和管理驱动程序的支持,这是由于 Ironic 移除了这些驱动程序所致。

    Bifrost 测试已迁移到基于 ipmitools 的 ironic 驱动程序和通过 ‘virtualbmc’ 工具暴露的虚拟硬件。

    Bifrost 设置的默认 ironic 驱动程序已更改为 pxe_ipmitoolagent_ipmitool

    Bifrost 动态库存中 CSV 裸机数据文件的默认驱动程序已更改为 agent_ipmitool

  • 将所有使用 ‘virtual’ 硬件进行测试的准备工作移动到 bifrost-create-vm-nodes 角色,并且 libvirt 交互已从 bifrost-ironic-install 角色中解耦。

  • 允许从环境变量 UPPER_CONSTRAINTS_FILE 消费 upper_constraints_file。这将对 OpenStack CI 特别有用,在该 CI 中,此变量在每次作业运行时定义,指向根据分支正确的 requirements 文件。

  • 现在可以为所有使用动态 JSON 库存的主机定义额外的每主机库存组。实现方法是简单地在 host_group 属性中定义一个组列表,如下例所示

    "node1": {
        "uuid": "a8cb6624-0d9f-c882-affc-046ebb96ec01",
        "host_groups": [
            "baremetal"
        ],
    }
    

    在配置虚拟机时,可以通过设置 test_vm_host_groups 变量来设置每个 VM 的库存组,如下所示

    { test_vm_host_groups: { testhost: [nova, cinder] } }
    

    还可以通过简单地将 host_default_group 变量设置为默认组列表来更改虚拟机的默认 baremetal 组,如下所示

    { test_vm_default_groups: [baremetal vms] }
    

    默认组列表也可以在 DEFAULT_HOST_GROUPS 环境变量中设置。目前,这是更改裸机主机默认组的唯一方法

    export DEFAULT_HOST_GROUPS="foo bar zoo"
    

    这将把默认组更改为 [foo, bar, zoo],而不是当前默认的 [baremetal]。在使用此方法时应格外小心,因为大多数 bifrost playbook 依赖于为配置主机提供一个 [baremetal] 组。

  • Bifrost 的测试已迁移到使用 JSON 格式的裸机库存文件,而不是已弃用的 CSV 格式。 bifrost-create-vm-nodes 角色仍然接受 baremetal_csv_file 变量作为写入库存的路径,但文件内容始终为 JSON 格式。应改用新的变量 baremetal_json_file 作为写入测试裸机库存文件的位置。

  • 下载的 IPA 文件现在可以使用校验和文件进行验证。上游构建默认情况下将进行验证,但可以通过将 ipa_kernel_upstream_checksum_urlipa_ramdisk_upstream_checksum_url 变量设置为空字符串来禁用此行为。默认校验和算法是 sha256,与上游文件中提供的算法匹配。如果您想提供自己的校验和文件,可以适当地设置上述变量以匹配您的设置。您还可以将 ipa_kernel_upstream_checksum_algoipa_ramdisk_upstream_checksum_algo 设置为校验和算法,例如 md5,如果您想提供非 sha256 校验和。但请小心,因为这些值必须对 Ansible get_url 模块的 checksum 参数有效。最后,也可以通过将 ipa_kernel_checksumipa_ramdisk_checksum 变量设置为 $algorithm:$checksum 来直接提供校验和。如果验证失败,bifrost 将重试几次以重新下载和重新验证文件,然后再放弃,假设存在网络问题或远程服务器上的文件损坏。

升级说明

  • Bifrost 设置的默认 ironic 驱动程序已更改为 pxe_ipmitoolagent_ipmitool

  • Bifrost 动态库存中 CSV 裸机数据文件的默认驱动程序已更改为 agent_ipmitool。依赖于此行为的 bifrost 用户必须显式地在 CSV 裸机数据文件中设置驱动程序。

  • bifrost-create-vm-nodes 角色中的 baremetal_csv_file 变量已被弃用,并将从 Queens 版本中删除。该角色写入此位置的文件现在始终为 JSON 格式。应改用 baremetal_json_file 变量,而不是 baremetal_csv_file。这仅涉及那些使用 bifrost-create-vm-nodes 角色和树外脚本来处理该角色生成的裸机库存文件的操作员,在虚拟硬件上运行 bifrost 测试的操作员。如果这些脚本依赖于该文件为 CSV 格式,则必须更新它们以使用 JSON 格式。

弃用说明

  • 依赖于 shell 环境变量来设置创建的虚拟节点的参数已被弃用,并将从 Queens 版本中删除。任何依赖于此行为的脚本都需要更改为显式地将这些参数作为 extra-vars 传递给 ansible-playbook 调用。

  • ironic_db_password 变量作为可用默认值的使用将在 bifrost 的 Queens 版本中删除。

  • 由于 ironic 中已删除这些驱动程序,因此已删除对 CSV 裸机数据格式的 *_ssh 驱动程序处理。

  • 裸机库存文件的 CSV 格式已被弃用,在 Queens 版本中将无法使用它。在弃用期间,bifrost 的动态库存仍然支持其处理,但此功能将在 Queens 版本中删除。

错误修复

  • CI 测试 playbook 以前在 /opt/git/openstack/ 中查找 requirements 存储库。现在已更改为在执行时使用 WORKSPACE 环境变量。

  • 修复了一个问题,即执行 install.yaml 会返回一个错误,表明未找到 SUDO_USER,通过提供回退到 ansible_user_id 变量来解决。

  • 允许覆盖 undionly.kpxe 启动选项。

    作为一名操作员,我可能希望为不通过 bifrost dnsmasq 服务器管理的主机提供 DHCP 启动选项。

    以前,如果通过文件在 /etc/dnsmasq.d/ 中向 dnsmasq 提供 dhcp-boot 配置选项,并且服务器未通过 iPXE 启动,则该选项将被 bifrost 在 /etc/dnsmasq.conf 中添加的 undionly.kpxe 选项覆盖。

    Bifrost 现在支持在 /etc/dnsmasq.d 中提供用户提供的 dhcp-boot 选项。应使用适当的标签集来指定这些选项,以确保规则覆盖 bifrost 在 /etc/dnsmasq.conf 中配置的默认规则。

  • 支持将 no_proxy 环境变量传递给 Ansible,用户可以使用 no_proxy 排除指定的主机使用代理。

其他说明

  • bifrost 主机依赖项现在正在使用 bindep 工具安装。如果需要,应将新的依赖项添加到 bindep.txt 文件中,并提供适当的配置文件信息。核心依赖项(即启动系统所需,例如 python、gcc、libffi 等)必须同时列在 bindep.txt 文件和 scripts/install-deps.sh 文件中,主要有两个原因。首先,OpenStack CI 可能只会咨询 bindep.txt 以拉取必要的依赖项。其次,bindep 需要某些软件包存在才能正确构建其依赖项。有关 bindep 工具的更多信息,请参见 https://docs.openstack.org/infra/bindep/

3.0.0

序言

在 Ocata 周期中,对 bifrost 进行了一系列改进,以提高 bifrost 安装的管理性和寿命。结合许多修复和改进,升级的用户应花时间阅读完整的发行说明。以下是一些亮点

  • Bifrost 现在默认从 PyPI 安装和使用 Ansible 2.1。

  • Ironic 的默认行为是在重新执行安装时修改预先存在的 ironic.conf,已更改为使用模板文件。

  • Bifrost 支持生成和读取 os-client-config clouds.yaml 文件,用于获取凭据。

  • Bifrost 现在可以利用身份验证,并在安装程序请求时安装和配置 keystone。

  • 由于过去一个周期中许多 ironic 的树内驱动程序由于缺乏第三方 CI 而被删除,因此已添加支持以启用安装暂存驱动程序存储库。

新特性

  • 允许插入 ironic 用户的私钥 SSH。这对于 ansible 部署驱动程序和其他基于 ssh 的驱动程序很有用。私钥可以指定为本地文件的路径,在 ssh_private_key_path 变量中,或作为字符串在 ssh_private_key 中。

  • 允许在远程服务器上安装 Ironic。已将 ‘target’ 组添加到库存中,默认情况下与 localhost 相同。要远程安装 ironic,应在 playbooks/inventory/target 文件中配置地址和 ssh 凭据。

  • Bifrost 已更新为使用 Ansible 2.1 的稳定分支进行安装的 Ansible 版本。

  • Bifrost 现在更喜欢使用已经安装了 Ansible 的系统。在这种情况下,执行 env-setup.sh 脚本是不必要的,因为它面向 bifrost 的开发和测试使用。

    为了在已经安装了 Ansible 的系统上使用 playbook,必须先安装库要求

    pip install -r requirements.txt

    如果必须在系统范围内安装软件包,可能需要管理权限。

  • 环境设置脚本现在将尝试从 PyPI 安装 bifrost,而不是使用稳定分支。这是为了解决 Ansible 稳定分支的稳定性问题。

    如果未请求安装到 virtualenv 中,Ansible 将安装到用户的 ~/.local 目录中,以避免破坏可能存在的系统安装。要使用这样安装的 Ansible,可能需要修改 $PATH 环境变量,以包含 ~/.local/bin 路径。

    通过使用 ANSIBLE_GIT_BRANCH 变量提供了一些向后兼容性,用户可以在其中定义 stable-X.Y,并将该系列中可用的最新版本安装。要作为 env-setup 脚本的一部分安装 Ansible 2.1 系列,请执行 env ANSIBLE_GIT_BRANCH="stable-2.1" scripts/env-setup

    类似地,ANSIBLE_PIP_VERSION 可用于指定所需的精确版本或版本范围。示例

    ANSIBLE_PIP_VERSION=2.1.0.1ANSIBLE_PIP_VERSION=<2.2

  • Bifrost 现在有一个角色,可以为 os-client-config 基于客户端的自动配置创建 clouds.yaml 文件。

  • 已添加创建服务帐户和默认用户帐户的功能到 bifrost。这由 enable_keystone 参数以及包含所有必需参数的 keystoneironic 数据结构控制。有关更多详细信息,请参阅 bifrost-ironic-install/defaults/main.yml 文件。

  • 以前,在 RedHat/Suse 系统上执行 bifrost 部署时,必须至少以允许模式运行 selinux。此补丁添加了必要的策略,以允许组件以强制模式运行。

  • bifrost 现在支持在基于 RedHat 的发行版上将 dnf 作为软件包管理器。它默认情况下尝试使用它,并在不可用时回退到 yum

  • 通过 ironic-inspector 发现节点现在默认启用。如果您希望禁用它,请将 enable_inspector_discovery 设置为 false 并重新执行安装 playbook。

  • Inspector 现在默认安装并启用。这更改了 enable_inspector 变量的默认值,从 false 变为 true

  • 添加了配置 ironic-inspector 以利用 keystone 的功能,使用基础 enable_keystone 布尔参数。

  • 已添加一个 ansible 角色,用于启用 keystone 的安装,为 bifrost 添加 keystone 支持做准备。

  • `bifrost-keystone-client-config` 角色现在可以写入一个 `clouds.yaml` 文件,其中包含多个云设置。它开始接受一个名为 `clouds` 的单个复合变量,该变量必须包含一个字典,描述键值对,格式为 `:`。为了向后兼容,仍然支持将 `config_*` 变量传递给该角色,但已弃用,预计将在 Pike 版本中移除。

    除了之前的 `bifrost` 云之外,默认的 `install.yaml` playbook 现在还会写入 `bifrost-admin` 云设置,其中包含 Keystone 管理员凭据,以便安装后,Keystone 服务可以立即完全使用(可以管理用户/项目等)。

  • 已添加 Bifrost 直接从 os-client-config 数据读取的能力。虽然 shade 在某种程度上可以做到这一点,但 bifrost 也允许用户通过 `ironic_url` 参数直接选择他们正在连接的服务器。为了避免重复代码和重新设计,如果未检测到全局 `auth` 参数,则将利用 `os_client_config` 模块中的身份验证参数来设置参数。

  • 已向与 ironic 交互的角色添加了一个可选参数,用于定义 `cloud_name`。该云名称由角色用于确定要使用的 os-client-config 中的条目。

  • 添加了对远程日志记录的支持。此功能允许从本地 syslog 服务器发送日志,而不是从裸机节点上的服务收集日志。要从实际运行的节点收集,需要注入到每个已部署主机中的配置。Syslog 服务器地址和端口可以在选项 `remote_syslog_server` 和 `remote_syslog_port` 中分别指定。

  • 现在可以安装 Ironic-Staging-Drivers。这些驱动程序未包含在 ironic 仓库中,并为 ironic 提供额外的硬件支持。有关驱动程序的更多信息,请访问 Ironic-Staging-Drivers。要安装暂存驱动程序,请将 `staging_drivers_include` 设置为 true。默认值为 false。

  • Ironic.conf 已被模板化,并且现在仅设置所需的选项,而不是编辑 Ironic 的示例配置。

已知问题

  • 如果在 virtualenv (venv) 中安装 bifrost 并在本地主机上运行 playbook,由于 Ansible 的操作系统行为,必须在系统级别安装基本的 python 要求。

  • Bifrost 现在有一个角色,可以为 os-client-config 基于客户端自动配置创建 clouds.yaml 文件。该文件会覆盖执行 bifrost 的用户的默认文件,该文件位于 `~/.config/openstack/clouds.yaml`。建议用户通过服务帐户执行 bifrost 的安装。

  • 添加对 os-client-config 的支持并不能允许用户直接选择他们的 `cloud`。仅使用返回的第一个条目。

  • 包含读取和存储身份验证数据的日志条目已使用 `no_log` 参数屏蔽。排查非标准身份验证配置可能需要修改 playbook,以便用户可以调试他们的输入,或者以不同的方式直接传递数据。

升级说明

  • Bifrost 已更改为默认使用 Ansible 2.1。如果部署遇到 Ansible 问题,他们可能希望检查/更新他们的 Ansible 版本,或者重新执行 env-setup.sh 脚本。

  • 由于 ironic 在 Ocata 版本中删除了 AMT 驱动程序,因此 Bifrost 不再支持在启用 PXE 驱动程序(默认情况下启用)时安装 ironic AMT 驱动程序。

  • 安装后,bifrost 将用模板生成的 ironic.conf 文件替换已安装的 ironic.conf 文件。对该文件的自定义设置更改,之前会被保留,现在在重新安装时将丢失。

弃用说明

  • 变量 `ANSIBLE_INSTALL_ROOT` 已弃用,仅用于为第三方脚本引发警告。

  • 变量 `ANSIBLE_FROM_PYPI` 不再有任何作用,因为 Ansible 现在始终从 PyPI 安装。

  • 参数 `node_network_info` 已弃用,转而使用参数 `node_network_data`,因为相关的配置驱动文件 `network_info.json` 最初命名错误,应该命名为 `network_data.json`。对 node_network_info 的支持以及在配置驱动器中继续写入 network_info.json 文件将在 Queens 周期中删除。

  • 设置 `ironic_auth_strategy` 已弃用,将在 Pike 中删除。如果存在 `enable_keystone` 设置并设置为 `true`,则该设置将无效。

  • 设置 `inspector_auth` 已弃用,将在 Pike 中删除。如果存在 `enable_keystone` 设置并设置为 `true`,则该设置将无效。

  • 将定义 `bifrost` 云凭据的 `config_*` 变量传递给 `bifrost-keystone-client-config` 角色已被弃用,将在 Pike 周期中删除。相反,应将定义要写入 `clouds.yaml` 的设置集的单个复合变量 `clouds` 传递给该角色。

错误修复

  • 由于 Ansible 使用的稳定分支标签发生了重大变化,bifrost 现在使用从 PyPI 安装 Ansible。

  • 在最初创建将配置驱动数据传递给节点的支持时,该文件被错误地命名为 `network_info.json`。正确的文件名是 `network_data.json`。现在将写入这两个文件,直到在 Queens 周期中删除对写入 `network_info.json` 的支持。

  • 已添加 DHCP 配置任务到 inspection 角色。在启用 inventory_dhcp 且节点尚未部署的情况下,inspection 无法工作,因为 dnsmasq 会忽略来自未知地址的请求。此修复程序引入了在 inspection 之前配置 DHCP 的任务。

  • 一些用户发现系统的内省会定期超时。因此,我们添加了一个新的参数 `inspection_wait_timeout`,现在默认值为 1800 秒。

其他说明

  • 默认情况下,安装过程现在会在重新安装时从 ipxe.org 下载 iPXE 二进制文件。以前,下载未设置为强制,因此如果文件已存在,则会被跳过。

  • 过去,Ironic 中的示例配置可能会设置 Bifrost 利用的一些样板。但现在该配置完全由注释组成,因此此更改不会带来太多变化,除了删除所有这些注释,并仅将用于在 Ironic 中使用 Bifrost 的必需内容保留在 ironic.conf 中。

2.1.0

新特性

  • 允许从 git 源代码安装 ironic-inspector 和 python-ironic-inspector-client,并通过环境变量指定源分支。

2.0.0

新特性

  • 允许使用自定义名称创建虚拟机,而不是使用 testvm 或 NODE_BASE 和顺序前缀。可以通过传递 TEST_VM_NODE_NAMES 环境变量来实现。

  • ironic 安装角色已分为 3 个阶段。`install` 阶段安装所有 ironic 包和依赖项。`bootstrap` 阶段生成配置并初始化 ironic 数据库。`start` 阶段启动所有 ironic 服务和依赖项。默认情况下运行每个阶段,可以通过定义 skip_package_install、skip_bootstrap 和 skip_start 来跳过。

  • 添加了对 bifrost-create-vm-nodes 创建的虚拟机 KVM 加速的支持。创建的虚拟机的默认域类型为 qemu,它使用 tcg 加速。为了使用 kvm 加速,用户需要将 VM_DOMAIN_TYPE 设置为 kvm。

  • 添加了一个新的 playbook 来重新部署节点。该 playbook 将每个节点的配置状态转换为“可用”,等待节点达到该状态。接下来,该 playbook 部署节点,等待节点达到配置状态“活动”。该 playbook 是 redeploy-dynamic.yaml,位于 playbooks 目录中。

升级说明

  • 添加了一个新的测试 playbook test-bifrost.yaml。该 playbook 合并了现有的 test-bifrost-dynamic.yaml 和 test-bifrost-dhcp.yaml playbook 的功能。

  • Bifrost 已更改为使用 TinyIPA 作为测试的默认 IPA 镜像。TinyIPA 的下载和内存占用更小。用户可以继续使用 CoreOS 或基于 diskimage-builder 的 IPA 镜像,但这是为了提高测试性能和可靠性。如果现有的 IPA 镜像被删除,bifrost 在安装过程中更新时会自动重新下载该文件。否则,将使用现有的 IPA 镜像。

弃用说明

  • test-bifrost-dynamic.yaml 和 test-bifrost-dhcp.yaml 已被 test-bifrost.yaml 取代,将在 Ocata 版本中删除。

其他说明

  • 已向 ironic 安装角色引入一个新的 install_dib 变量,用于控制磁盘映像生成器和 dib-utils 的安装。为了保持以前的行为,install_dib 将默认为 create_image_via_dib 的值。

1.0.0

序言

从 bifrost 0.1.x 开始,发布说明生成是通过 reno 工具完成的。

新特性

  • 添加了通过环境变量 mysql_user(用户名)和 mysql_pass(密码)传递 Mysql 用户名和密码的支持。这对于 Mysql 服务器可能已经存在并且已经设置了用户名和密码的情况很有用。

  • 允许选择使用通过 ansible 模块与 ironic 服务交互的角色进行身份验证。这仅限于通过 os-client-config 获取身份验证信息的会话。该角色的默认设置保持不变,默认为 noauth 模式。有关 os-client-config 的更多信息,请访问 https://docs.openstack.org/developer/os-client-config/

  • Bifrost 传统上使用生成的 HTTP URL 来指向 ironic 的 IPA 位置,IPA 用于机器的启动序列。用户现在可以覆盖该默认设置并显式选择 https,如果他们的环境已预配置为支持 HTTPS。

  • inventory_dhcp 功能允许配置 dnsmasq 以提供 Bifrost 部署的服务器的 IP 配置,而不是将该信息设置到配置驱动器中。以前,该功能假定 dnsmasq 设置的 IP 既是配置 IP 又是管理 IP,但在某些情况下并非总是如此。通过包含 inventory_dhcp_static_ip 选项,用户可以在服务器的基础上通过 JSON/YAML/CSV 库存提供特定的配置 IP,该 IP 将仅用于配置。

  • 添加了新功能来管理库存中的 DNS 设置。当 `inventory_dns` 设置为 True 时,它将为库存中存在的每个主机名填充一组 record-host 条目,与 `ipv4_address` 匹配。这将覆盖默认 dnsmasq 行为,该行为会将主机名与 leases 文件中的 IP 关联。

  • 允许填充 dnsmasq 的 DNS 服务器设置。这是可选的,但如果设置了 `dnsmasq_dns_servers` 设置,它将在生成的 bifrost dnsmasq 配置中添加 `dhcp-option=6,dnsmasq_dns_servers`。

  • 允许填充 dnsmasq 的域设置。如文档所示,这是可选的,但如果设置了,它将执行以下操作。1) 允许 DHCP 主机具有完全限定的域名,只要域名部分与此设置匹配。2) 设置“domain”DHCP 选项,从而可能设置所有通过 DHCP 配置的系统的域名。3) 为“expand-hosts”提供域名部分

  • 现在安装了支持 PXE 驱动程序子系统的支持,该子系统使用 iSCSI 将磁盘映像写入目标节点。默认情况下,此支持已启用。

已知问题

  • 希望使用不利用 os-client-config 的身份验证的用户,需要手动更新 playbook 以设置适当的模块设置。

  • 基本测试表明,PXE 驱动程序可能导致当前 bifrost 配置无法写入配置驱动器。

升级说明

  • Bifrost 已转变为专注于使用 Ansible 2.0。虽然 Ansible 2.0 相对较新,但它已经稳定开发了相当长的时间。如果现有的用户打算重新安装/升级他们的环境,他们可能会发现需要删除他们现有的 ansible 环境,该环境位于 `/opt/stack/ansible`。

  • Ironic inspector 已切换为使用 MySQL 作为其后端数据库。这是为了修复一个功能上破坏 inspection 的错误。

  • PXE 驱动程序子系统支持现在默认启用。如果用户希望防止这种情况,则应将 `enable_pxe_drivers` 设置设置为 `false`。

弃用说明

  • 今后,bifrost 将以使用 Ansible 2.0 为目标。由于某些样式/配置更改,一些角色在其元数据中被标记为仅打算与 Ansible 2.0 配合使用,因为所需的特性是在 2.0 中添加的,无法在 1.9.x 兼容的方式中重现。

安全问题

  • 已添加 PXE 驱动程序子系统支持,但是这需要 conductor 能够通过 iSCSI 连接到正在配置的节点。因此,默认情况下会更新 sudoers 配置,以启用 ironic 启动 iSCSI 连接并将映像应用到远程磁盘。提醒一下,用户应默认使用代理驱动程序,因为 PXE 驱动程序不支持清理。

错误修复

  • 文件所有权的一个错误导致 ironic-inspector 功能无法按预期工作,并且测试无法在没有手动清理的情况下重新执行。通过将数据库使用迁移到 MySQL,已纠正此问题。

  • 当使用 inventory_dhcp 时,添加了 Dnsmasq 选项,仅向已知的 MAC 地址提供 DHCP 租约。

  • 为 inventory 模块添加了功能测试,利用 JSON 和 YAML 解析来确保输入与转换所利用的预期输出相同。

  • 添加了一个功能测试,重新使用由 CSV 文件格式生成的数据,以帮助识别每种数据解析方法中存在的逻辑差异。

  • PXE 驱动程序支持基础之前不完整,现已修改为正确支持 PXE 驱动程序。这已经在 Ubuntu 14.04 LTS 上进行了测试。

其他说明

  • README.rst 文件已更新,包含默认启用的驱动程序列表,以及测试模式下可用的驱动程序。

  • 为可能希望通过 bifrost 利用 OneView 驱动程序进行大规模机器部署的用户,在 README.rst 文件中添加了一个指针,因为该驱动程序无法默认启用。

  • 配置 dnsmasq_dns_servers 设置时,可以指定多个名称服务器,用逗号分隔。

  • 该角色将接受 domain 设置。如果存在该设置,它将被填充到 dnsmasq.conf 中的等效域设置中。