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-dynamicplaybook 在使用 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_source和deploy_image_checksum。
允许通过设置新的参数
deploy_config_drive来自定义bifrost-deploy-nodes-dynamic角色的 configdrive URL 或 JSON。
升级说明¶
参数
network_mtu、ipv4_nameserver和ipv4_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-dynamic和bifrost-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-api和ironic-conductor服务仍在运行。已修复此问题,但如果您已经升级到受影响的版本,则需要使用systemctl手动停止这些服务。
升级说明¶
升级时,现有的 API 和 conductor 服务将被禁用,并启动一个单独的组合
ironic进程。
在您的 inventory 文件中,请从
driver_info中删除子部分power、console和management。相反,将所有字段直接放在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下的子部分power、console和management。
密码文件 (
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-bootCLI 标志覆盖。
弃用说明¶
使用传统启动已被弃用,尽管我们目前没有计划删除对其支持。请考虑使用 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 及更高版本应该可以工作,但不再进行测试。
adminKeystone 端点将从使用端口 35357(单独的 admin API)升级到使用端口 5000(默认 Identity API)。
切换 TFTP 处理从 Xinetd 到 dnsmasq,必须启用 dnsmasq 才能使 TFTP 启动工作。
Keystone 服务现在作为单独的 systemd 服务
uwsgi@keystone-public和uwsgi@keystone-admin运行。独立的uwsgi服务不再使用,并在升级时被禁用。
如果
enable_tls为true,则 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启动接口所需的默认内核参数。
启用
idrac硬件类型时,安装 sushy-oem-idrac。
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_dhcp为false时,动态 DHCP 库存 hostsdir 现在默认创建并启用。
升级说明¶
当
inventory_dhcp为true时,默认不再在/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_track和power_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=true与enable_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.yaml和openrc中 ironic 和 ironic-inspector API URL,而不是localhost。使用ironic_api_url和ironic_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 服务。
不再修改
publicfirewalld 区域,而是创建一个新的区域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.yaml或openrc文件位于主目录中。
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允许指定默认启动模式:uefi或bios。
将新的参数
developer_mode设置为true以使从源代码安装的所有软件包都以--editable标志安装。相应的bifrost-cli参数是--develop。
新的变量
git_url_root允许覆盖所有仓库的根 URL(例如,将默认的https://opendev.org更改为本地路径)。
现在支持 API 服务的 HTTP 基本身份验证,除了无身份验证和 Keystone 之外。它通过将
noauth_mode=false与enable_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允许指定默认启动模式:uefi或bios。
升级说明¶
变量
ci_testing不再被角色考虑。如果需要 Bifrost 从其预缓存位置复制仓库,请使用现有的copy_from_local_path。
如果使用
cleaning=true启用完全磁盘清理,现在还需要将cleaning_disk_erase=true设置为 true。省略它将只会启用元数据清理。
现在所有服务默认使用 *journald* 日志记录,
ironic-api.log和ironic-conductor.log不再填充。使用ironic_log_dir和inspector_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设置服务之间使用的密码,或覆盖整个ironic和keystone对象。
安全问题¶
对 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_config 是 config
os_ironic 是 baremetal_node
os_ironic_inspect 是 baremetal_inspect
os_ironic_node 是 baremetal_node_action
os_keystone_role 是 identity_role
os_keystone_service 是 catalog_service
os_user 是 identity_user
os_user_role 是 role_assignment
8.2.0¶
新功能¶
现在可以使用
bifrost云使用内省命令,即使在无身份验证模式下也是如此。
Debian Buster 现在支持作为基础操作系统。
配置默认部署和救援内核/ramdisk,在
driver_info中设置它们现在是可选的。
Ubuntu Focal (20.04) 现在支持作为基础操作系统。
如果
enabled_bios_interfaces、enabled_boot_interfaces、enabled_management_interfaces和enabled_power_interfaces为空(默认),则enabled_hardware_types的值现在派生自它们。
添加了一个新的参数
internal_ip,用于指定节点用于访问 ironic 和 HTTP 服务器以及在禁用 keystone 时的跨服务交互的 IP 地址。默认情况下,使用network_interface的 IPv4 地址。
manual-management硬件类型现在默认启用。它可以与不具有受支持 BMC 的硬件一起使用。
noop管理接口现在可以开箱即用地与ipmi和redfish节点一起使用,以防止 ironic 更改启动设备和顺序。
MetalSmith 现在默认安装。
在创建测试 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以覆盖。
使用 ironic-python-agent-builder 代替已弃用且损坏的
ironic-agent元素来构建部署 ramdisk。
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_auth和ironic_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"
允许填充 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_ironicansible 模块尚不了解硬件类型。
弃用说明¶
Ironic 已弃用对经典驱动程序的支持。这些是以前缀
agent或pxe开头的驱动程序。新的默认硬件类型,取代驱动程序,是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_dir、inspector_log_dir和nginx_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_ipmitool和agent_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_url或ipa_ramdisk_upstream_checksum_url变量设置为空字符串来禁用此行为。默认校验和算法是sha256,与上游文件中提供的算法匹配。如果您想提供自己的校验和文件,可以适当地设置上述变量以匹配您的设置。您还可以将ipa_kernel_upstream_checksum_algo或ipa_ramdisk_upstream_checksum_algo设置为校验和算法,例如md5,如果您想提供非 sha256 校验和。但请小心,因为这些值必须对 Ansibleget_url模块的checksum参数有效。最后,也可以通过将ipa_kernel_checksum或ipa_ramdisk_checksum变量设置为$algorithm:$checksum来直接提供校验和。如果验证失败,bifrost 将重试几次以重新下载和重新验证文件,然后再放弃,假设存在网络问题或远程服务器上的文件损坏。
升级说明¶
Bifrost 设置的默认 ironic 驱动程序已更改为
pxe_ipmitool和agent_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.1或ANSIBLE_PIP_VERSION=<2.2
Bifrost 现在有一个角色,可以为 os-client-config 基于客户端的自动配置创建 clouds.yaml 文件。
已添加创建服务帐户和默认用户帐户的功能到 bifrost。这由
enable_keystone参数以及包含所有必需参数的keystone和ironic数据结构控制。有关更多详细信息,请参阅 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 中的等效域设置中。