Ocata 系列 (3.0.0 - 3.0.x) 发行说明

3.1.1

新特性

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

错误修复

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

3.0.0

序言

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

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

  • Ironic 之前在重新执行安装时会修改现有的 ironic.conf,现在改为使用模板文件。

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

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

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

新特性

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

  • 允许在远程服务器上安装 Ironic。在 inventory 中添加了与 localhost 默认相同的 ‘target’ 组。要远程安装 ironic,需要在 playbooks/inventory/target 文件中配置地址和 ssh 凭据。

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

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

    为了在已经安装了 Ansible 的系统上使用 playbooks,必须先安装库依赖项,然后才能执行 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 部署时,必须至少以 permissive 模式执行 selinux。此补丁添加了必要的策略,以允许组件以 enforcing 模式运行。

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

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

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

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

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

  • bifrost-keystone-client-config 角色现在可以编写一个用于 os-client-config 基于客户端自动配置的 clouds.yaml 文件。它开始接受单个复合变量 clouds,该变量必须包含一个描述键值对的字典,格式为 <cloud-name>:<dict-of-cloud-settings>。为了向后兼容,将 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_serverremote_syslog_port 中指定。

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

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

已知问题

  • 如果在 virtualenv (venv) 中安装 bifrost 并在 localhost 上运行 playbooks,则由于 Ansible 的操作系统行为,必须在系统范围内安装基本的 python 依赖项。

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

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

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

升级说明

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

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

  • 安装后,bifrost 将替换已安装的 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 的任务。

  • 一些用户定期遇到 introspection 超时的系统问题。因此,我们添加了一个新的参数 inspection_wait_timeout,现在默认值为 1800 秒。

其他说明

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

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