2024.1 系列 (11.8.0 - 12.1.x) 发行说明

12.1.1

错误修复

  • 修复了与 openstacksdk 2.0 及更高版本相关的内存泄漏问题。此版本需要显式关闭连接,否则它们将永远驻留在内存中。

12.0.0

升级说明

  • 默认情况下已禁用 ironic-inspector 使用的旧版基于角色的访问控制 (RBAC) 策略。其结果是,默认情况下不再启用旧版 baremetal_adminbaremetal_observer 角色。可以使用系统范围的访问权限连接到 ironic-inspector 服务,或者使用具有 adminservice 角色的用户。

    Ironic 项目预计此更改不会引起任何问题,因为 ironic-inspector 服务是系统本身的服务。也就是说,如果操作员部署的配置依赖于已弃用的角色,则需要进行配置更改。

    此更改是作为 一致且安全的 RBAC 社区目标以及底层 [oslo_policy] enforce_scope[oslo_policy] enforce_new_defaults 设置更改为 True 的结果。

    希望恢复到旧策略配置的操作员可以通过在 ironic-inspector.conf 中设置以下值来执行此操作。

    [oslo_policy]
    enforce_new_defaults=False
    enforce_scope=False
    

    建议恢复配置的操作员对他们的配置进行必要的更改,因为旧版 RBAC 策略将在未来某个时间点被删除。请查看 2024.1 发布时间表。否则,可能需要操作员构建自定义策略覆盖配置。

错误修复

  • 如果检查过程收集到的 LLDP 原始数据包含非 UTF-8 信息,解析器将失败并中断检查过程。此补丁通过排除格式错误的数据并在日志中添加条目以提供有关失败 TLV 的信息来解决此问题。

  • 修复了基于角色的访问控制状态和功能,使其与 OpenStack 社区 RBAC 目标保持一致,其中包括默认支持 service 角色,以便无需 admin 用户名即可配置服务间通信。很大程度上,这些更改被忽略了,因为 Inspector 服务被认为是一个“仅限管理员”的服务。

    此外,与整个社区的立场变化保持一致,即 admin 角色足以无需显式的 system 范围。为了帮助确保高级别的安全性,还添加了对 manager 角色的显式测试,该角色不可用,因为该角色保留给租户项目内的管理功能。

11.7.0

弃用说明

  • ironic-inspector 项目现在处于维护模式,从现在开始只会接收错误修复和其他次要改进。相同的功能正在添加到 ironic 本身。预计在 Caracal 发布周期中提供预览版,此后 ironic-inspector 将被弃用。

错误修复

  • 修复了一个问题,如果红鱼 BMC 地址使用方括号括起来的 IPv6 地址,则检查将失败。请参阅错误:2036455

11.3.0

升级说明

  • SQLAlchemy 的最低版本现在是 1.4.0,为未来预计发布的 SQLAlchemy 2.0.0 做准备。

  • Oslo.DB 的最低版本现在是 12.1.0,为未来预计发布的 SQLAlchemy 2.0.0 做准备。

  • 从版本早于 7.3.0 的数据库模式升级不受支持。请先升级到中间版本,然后再升级到此版本。

弃用说明

  • 插件维护者应注意,Node Cache 对象字段 version_id 字段不再使用。为了兼容性,如果已存储,它仍然由数据模型返回,但 Inspector 不会在其正常操作过程中更新该字段。

错误修复

  • 修复了一个问题,即 inspector 进程 RAM 中的节点数据库响应会变得孤立,并且不会被垃圾回收。我们在处理数据库连接锁仍然存在时发现了并重现了此问题。请参阅 故事 2009727 以获取更多详细信息。

其他说明

  • 直接使用数据库的插件维护者需要更新他们的插件。具体来说,数据库 API 已被划分为使用 enginefacade 以及专用的读取器和写入器模型,以期支持 SQLAlchemy 2.0 以及最终将 Inspector 合并到 Ironic。数据库操作现在通过 ironic_inspector.db.api 模块执行,而之前它们分布在 ironic_inspector.dbironic_inspector.node_cache 中。

11.1.0

新特性

  • 遵循与 Ironic Python Agent 确定根设备相同的流程,该流程已更改以适应允许用户指定在清理/部署期间应跳过的设备列表的功能。字段 skip_block_devices 是节点的一个属性

10.11.0

新功能

  • 支持在 Unix 套接字而不是正常的 TCP 套接字上侦听。这在使用代理模式的 HTTP 服务器(如 nginx)时很有用。

10.10.0

已知问题

  • 目前,对于空内容体的 HTTP 204 响应,响应头违反了 RFC7230。 这并非有意为之,但底层库也会对头部进行不适当的更改,这可能导致客户端出现奇怪的故障。 预计在解决 eventlet 中的一个底层问题后,将进行修正。

升级说明

  • 用于允许重新启动 systemd 服务 openstack-ironic-inspector-dnsmasq.service 的 rootwrap 规则已被删除。自 Train 以来,没有已知工具需要此规则。任何设置 [dnsmasq_pxe_filter]dnsmasq_start_command 的配置工具也需要编写适当的 rootwrap.d 文件,就像 inspector devstack 插件所做的那样。

错误修复

  • 修复 HTTP 响应,以防止用于支持 WSGI 应用程序运行的 Eventlet 库错误地将 Transfer-Encoding 头注入到 HTTP 响应中,即使在 HTTP 204 响应中也是如此,这违反了 RFC7230。 该头部最终可能导致各种客户端反应,这些反应并非预期,并且可能引发异常。 目前,通过显式返回一个 Content-Length 头来解决此问题,这同样违反了 RFC7230,但目前看来是较小的恶劣行为。

10.9.0

新功能

  • 添加了对列表内省 API 中按状态过滤的支持。请参阅 故事 1625183

    • GET /v1/introspection?state=starting,...

10.8.0

新功能

  • 新增了 [healthcheck] enabled 选项。 当此选项设置为 True 时,健康检查中间件将在 API 管道中启用,并且将在 /healthcheck 路径上提供一个额外的 API 端点来监控服务可用性。

错误修复

  • Inspector 现在忽略在 pxe 过滤器驱动程序同步期间列出 ironic 端口的失败,并直接跳过同步。 之前,此类错误会导致 pxe 过滤器驱动程序陷入未初始化状态,直到重新启动 ironic inspector 为止。 请参阅 bug 2008971

  • 修复了 Inspector 中各种任务未应用重试逻辑的问题,并且可能偶尔失败。 这是因为 OpenStack SDK 不理解 NodeLocked 错误,而 python-ironicclient 之前会默默处理该错误。 现在,诸如“电源重启”和“设置启动设备”等基本操作将在失败时自动重试。 有关更多信息,请参阅 story 2009107

10.7.0

错误修复

  • 修复了一个问题,即由于瞬态故障导致的检查失败可能会阻止重试检查尝试被视为失败。如果之前的检查失败并且处于 error 状态,当请求新的内省时,状态现在会正确设置为 starting

10.6.0

新功能

  • 默认策略已被替换为与 Secure-RBAC 范围和角色一致的策略。由于 ironic-inspector 仅由系统级管理员使用,因此仅支持 system 范围,并且策略规则中的唯一角色是 adminreader

升级说明

  • [DEFAULT]/ipmi_address_fields 现在在默认配置中包含 ibmc_address,允许内省尝试匹配 BMC 地址,如果在使用 ibmc 驱动程序时未定义任何端口。

  • 配置选项 [oslo_policy] policy_file 的默认值已从 policy.json 更改为 policy.yaml。使用自定义策略文件或先前生成的静态策略文件的操作员应生成新的策略文件,并在添加任何新策略或规则的情况下修改它们以满足其需求。请参阅 oslopolicy-convert-json-to-yaml 工具,以向后兼容的方式将 JSON 转换为 YAML 格式的策略文件。

  • 只有在将 [oslo_policy] 配置更改为 enforce_new_defaults=Trueenforce_scope=True 时,才会强制执行新策略,否则将使用现有的弃用策略。依赖于具有 baremetal_adminbaremetal_observer 角色的用户帐户需要具有系统范围的 adminreader 角色才能在使用新策略时使用 API。

弃用说明

  • 自 Victoria 开发周期以来,oslo.policy 库已弃用旧策略文件的使用。因此,此弃用在 Wallaby 中被注意到,预计 oslo.policy 将来会删除对它的支持。因此,操作员需要转换为 YAML 策略文件。有关迁移任何自定义策略文件的详细信息,请参阅升级说明。

  • 默认情况下仍然强制执行以前的策略,但现在已弃用,将在未来的版本中删除。

10.5.0

新功能

  • 添加了在代理后设置 ironic inspector 的可能性,同时允许资源 API 返回的链接保持正确。Inspector 现在尊重与 API 请求一起传递的以下标头:X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-HostX-Forwarded-PortX-Forwarded-Prefix。如果 API 在提供 SCRIPT_NAME 环境变量的情况下运行,则现在也受其尊重,并允许在响应请求时返回正确的链接,即使 inspector API 未放置在 Web 服务器的根资源上。

错误修复

  • 修复了与 SQLAlchemy 1.3.20 相关的数据库迁移。

10.4.0

新功能

  • 添加了一个 accelerators 插件,用于识别加速器设备并更新裸机节点以供将来调度。加速器设备将保存到节点属性下的 accelerators 键。引入了一个配置选项 [accelerators]known_devices 以指定包含识别加速器设备所需信息的配置文件,默认情况下它使用树内配置文件 known_accelerators.yaml

  • dnsmasq pxe-filter 现在支持主机 InfiniBand MAC 到 EthernetOverInfiniBand MAC 的映射。(此前仅由 iptables pxe-filter 支持。)

  • 默认情况下,DHCP 过滤将在内省活动时为任何节点打开 DHCP 服务器。它只会阻止未进行内省的已注册节点的 DHCP。这样做是为了支持接口发现(默认情况下,如果端口不存在,则会将 pxe 端口注册到 ironic)。这种行为并不总是想要的,因为未由 ironic 管理的节点可能会启动检查镜像。

    添加了一个新选项 [pxe_filter]deny_unknown_macs,允许更改此行为,以便 DHCP 服务器仅允许正在内省的已注册节点,并拒绝其他所有节点。

    注意

    如果此选项为 True,则节点必须在内省之前至少有一个已注册的端口。

错误修复

  • 修复了节点识别逻辑,使用 [DEFAULT]ipmi_address_fields 配置选项识别机器时,允许用户列出 driver_info 字段值的 redfish_address 标签。 之前,由于评估的是完整的 URL 而不是 URL 可能解析到的内容,因此主机将无法匹配。

10.3.0

新功能

  • 新的 API GET /v1/introspection/<node>/data/unprocessed 允许检索原始(未处理)数据(如果启用了数据存储)。

升级说明

  • API 现在默认侦听 ::,更改 listen_address 配置选项以进行修改。

错误修复

  • extra_hardware 处理钩子不再拒绝解析额外数据(如果某些记录为空或长度意外)。这些记录现在将被丢弃。

    可以通过将新选项 [extra_hardware]strict 设置为 True 来返回以前的行为。

  • extra_hardware 处理钩子不再删除传入的 data 对象(如果它具有意外的数据格式),假设该对象用于其他用途。

    可以通过将新选项 [extra_hardware]strict 设置为 True 来返回以前的行为。

  • 使用 auth_strategy=http_basic 错误地要求对公共路径(例如 / 和 /v1)进行身份验证。这些路径现在是公开的。

  • 修复了一个可能发生在充当代理的 Apache httpd Web 服务器上的问题,该服务器可能会报告 Bad Gateway,但是 inspector 会继续运行,就好像没有问题一样。这是由于 HTTP 202 和 204 响应缺少 Content-Type 标头,以及 HTTP 202 消息缺少消息体,Apache httpd 可能会对此报错所致。

  • 如果匹配的根设备大小为零,则不再尝试将 local_gb 设置为 -1。

10.2.0

新功能

  • 添加了禁用与 ironic 的定期清理和同步任务的能力,方法是将 [DEFAULT]clean_up_period 设置为 0。这仅适用于“独立”操作员,因为如果在非独立环境中,它可能会导致意外行为。

  • 添加了一个新的配置选项 [discovery]enroll_node_fields,用于指定要在节点上设置的附加字段(例如驱动程序接口)。

  • 启用基本 HTTP 身份验证中间件。

    当配置选项 [DEFAULT]auth_strategy 设置为 http_basic 时,非公共 API 调用需要设置有效的 HTTP Basic 身份验证标头。配置选项 [DEFAULT]http_basic_auth_user_file 默认设置为 /etc/ironic-inspector/htpasswd,并指向支持 Apache htpasswd 语法的文件[1]。每次请求时都会读取该文件,因此无需在更改后重新启动服务。

    支持的唯一密码摘要是 bcrypt,并且 bcrypt python 库用于密码检查,因为它支持 Apache htpasswd 实用程序生成的以 $2y$ 开头的 bcrypt 密码。

    要尝试基本身份验证,可以执行以下操作

    • 设置 /etc/ironic-inspector/inspector.conf [DEFAULT]auth_strategyhttp_basic

    • 使用条目填充 htpasswd 文件,例如:htpasswd -nbB myName myPassword >> /etc/ironic-inspector/htpasswd

    • 发出基本身份验证的 HTTP 请求,例如:curl --user myName:myPassword https://:6385/v1/introspection

    [1] https://httpd.apache.org/docs/current/misc/password_encryptions.html

  • 添加了用于与 Ironic 清理同步的定期领导者选举。选举间隔由新的 leader_election_interval 配置选项配置。

  • 添加了一个配置选项 [processing]update_pxe_enabled,用于控制是否应根据内省数据更新 pxe_enabled。默认值为 True,与向后兼容。

升级说明

  • 移除了 python construct 库的上限约束,并使用可用的最新版本。python construct 的最低兼容版本现在是 2.9.39

  • 来自 extra_hardware 处理钩子的原始数据不再以名为 extra_hardware-<node UUID> 的对象的形式存储在 Swift 中。相同的信息已经作为未处理的内省数据的一部分可用,而无需对 Swift 有硬依赖。

弃用说明

  • 已移除弃用的 [swift]max_retries 参数。

错误修复

  • 修复了一个在接口验证期间忽略 IPv6 链路本地地址的问题,导致内省失败。

  • 修复了尝试内省未当前缓存在内存中的活动节点时出现的 AttributeError: 'Node' object has no attribute 'uuid' 错误。

  • 即使一个周期性任务失败,也不会再中止整个过程。

  • 修复了访问带有尾部斜杠的 API 端点的问题。现在它们与不带斜杠的端点处理方式相同,尽管后者仍然是规范 URL。

  • 不再对 manage_boot==False(即启动由 ironic 管理)的节点使用内省延迟。这没有用处,并且如果节点在 PXE 过滤器中被列入白名单之前启动,实际上可能会破坏内省。

  • manage_boot==False 时,内省启动 API 现在是同步的。这意味着任何失败都将传播到 ironic,从而防止 ironic 启动节点并在更新 PXE 过滤器之前启动它。

10.1.0

新特性

  • 添加了为检查过程定义作用域的功能。 以前,所有内省规则都应用于检查任何节点时。 没有机制可以仅应用选定的规则集。 此更改在内省规则中引入了一个 scope 字段。 如果在内省规则上设置了作用域,它仅适用于具有匹配 inspection_scope 属性的节点。 如果未设置,它将适用于所有节点。

  • 添加了 physnet_cidr_map 处理插件,该插件使用在检查期间返回的接口的 IP 地址,并通过配置选项 [port_physnet]/cidr_map 中的 CIDR 到物理网络的映射来设置端口的 physical_network

升级说明

  • 为了支持 openstacksdk,python-ironicclient 包已被移除作为依赖项。 如果之前调用了 ironicclient,第三方模块和插件需要更新。

其他说明

  • ironic-inspector 的 devstack 插件已更改为利用基于 Centos8 的预构建 ironic-python-agent 镜像,而不是基于 CoreOS 的旧镜像。

  • 为将物理网络分配给端口的插件添加了基类 (BasePhysnetHook)。

10.0.0

升级说明

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

错误修复

  • 修复了手动检查活动节点时,节点 UUID 没有传递回 inspector 的问题,导致 inspector 无法识别匹配的端口。

  • 如果 manage_bootFalse,则内省后不再尝试关闭节点。

  • 内省现在尊重节点 driver_info 中的 force_persistent_boot_device 参数。

  • 修复了手动检查活动节点时发生的问题,代码尝试删除或更新端口,而活动节点的唯一允许修改是更新 MAC 地址(如果节点处于维护状态)。

9.2.0

序言

Ironic Inspector 的 Train 版本支持运行独立的 API 和 conductor 服务。

新特性

  • 允许将 ironic-inspector 服务拆分为 ironic-inspector-api 和 ironic-inspector-conductor,它们通过 tooz 及其底层后端进行协调。引入了一个新的配置选项 [DEFAULT]standalone 以启用此功能。配置默认值为 True,ironic-inspector 运行为单个服务,与旧行为兼容。当设置为 False 时,使用 ironic-inspector-api-wsgi 启动 API 服务,并使用 ironic-inspector-conductor 启动 conductor 服务。对于以非独立模式运行的 ironic-inspector,用户需要设置新的配置选项 [coordination]backend_url,它指定用于协调的后端。

升级说明

  • 将默认 Ironic API 版本更新为 1.56,这是 Stein 系列裸机发布 (12.1.0) 中的最新版本。

错误修复

  • 修复了未在查找缓存中的活动节点的内省,请参阅 story 2006233

9.1.0

新特性

  • 添加了在裸机节点处于 activerescue 状态时,将内省数据发布到 API 的功能。此功能对于希望定期更新内省数据的数据中心运营商可能很有用。

    要启用此功能,请将 [processing]permit_active_introspection 设置为 True。当设置此选项时,对于处于 activerescue 状态的节点,将覆盖 [processing]power_off 的值。

  • 添加了对使用 IPv6 BMC 地址注册节点的支持。引入了一个配置选项 [discovery]enabled_bmc_address_version 来指定 BMC 地址首选 IP 版本的顺序。

升级说明

  • 已移除 ironic 部分中的弃用选项 os_regionauth_strategyironic_urlos_service_typeos_endpoint_type。请使用 keystoneauth 选项代替。

  • 已移除 [swift] 部分中的弃用配置选项 os_service_typeos_regionos_endpoint_type

弃用说明

  • 配置选项 [swift]max_retries 已被弃用。它在几个版本中已经没有任何作用。

错误修复

  • 如果清单中未提供内存或 CPU 信息,则不再导致内省失败。这些不再是调度所必需的,内省也不应该需要它们。

9.0.0

新特性

  • 一个新的选项 enable_mdns 允许启用通过 mDNS 发布裸机内省 API 端点,如 API SIG 指南 中所述。

  • 添加了对使用提供的未处理内省数据重新应用的支持。内省数据以 POST 请求的主体形式提供给 /v1/introspection/<node_id>/data/unprocessed。内省数据也将保存到存储后端。

升级说明

  • 已移除弃用的 SSL 配置选项 [DEFAULT]ssl_cert_path[DEFAULT]ssl_key_path,请使用 [ssl] 部分中的配置选项。

  • 已移除弃用的配置选项 [processing]store_data_location

安全问题

  • 修复了在根据内省数据查找节点时输入过滤不足的问题。 这可能会通过 /v1/continue API 端点允许 SQL 注入。 详情请参阅 故事 2005678

错误修复

  • 修复了 extra_hardware 插件无法将额外硬件信息保存到 Swift 的问题,收集到的信息未被处理和使用。

  • 修复了在映射 InfiniBand MAC 地址到 EthernetOverInfiniBand MAC 地址时的问题。 在此修复之前,映射会失败并引发异常。

8.2.0

序言

Ironic-inspector 的 Stein 版本支持将内省数据存储在数据库中而不是对象存储服务中,以及 IPv6 的修复。

新特性

  • 添加了将内省数据存储在 ironic-inspector 数据库中的支持。将选项 [processing]store_data 设置为 database 以使用此功能。

  • 添加了一个迁移工具 ironic-inspector-migrate-data,以促进受支持的内省数据存储后端之间的内省数据迁移。当前可用的内省数据存储后端是:databaseswift。例如,要将存储在 swift 中的现有内省数据迁移到数据库,请执行以下命令

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

    参与迁移的存储后端应已在 ironic inspector 配置文件中正确配置。在可以开始内省数据迁移之前。 ironic inspector 数据库应升级到具有最新的模式。

  • 添加了支持在向 ironic-inspector API 发送请求时使用 latest 作为微版本值。

升级说明

  • 如果更新了驱动程序,则 set-attribute 操作现在会自动将 reset_interfaces 设置为 True。如果不需要,请显式将其设置为 False

弃用说明

  • 弃用了配置选项 [processing]store_data_location。可以通过 ironic-inspector API 获取内省数据,无需在 ironic 中保留额外的链接。

错误修复

  • 修复了带有 IPv6 BMC 地址的节点的检查。由于 IPv6 地址被视为主机名,而主机名无法解析,因此无法启动检查。

  • 删除了 PXE 过滤器驱动程序的调试日志记录,该日志记录在启用调试时倾向于填满 inspector 日志。

  • 通过提供 reset_interfaces 修复了使用 set-attribute 内省规则操作更新驱动程序的问题。

8.1.0

新特性

  • 添加了一个配置选项 [iptables]ip_version 来指定 iptables pxe 过滤器的所需 IP 版本,可能的值为 46,默认值为 4。当设置为 6 时,iptables pxe 过滤器将使用 ip6tables 命令来管理 DHCPv6 端口 547 的规则。

  • 添加了新的内省规则操作来添加或删除节点上的特性:add-traitremove-trait

升级说明

  • 弃用的配置选项 [DEFAULT]node_status_keep_time 已被移除。

  • 添加了 ironic-inspector API 和 worker 之间通信的与 rpc 相关的配置选项。升级期间需要正确配置。如果不可用或不需要 rpc 后端,请将 [DEFAULT]transport_url 设置为 fake://

弃用说明

  • 配置选项 [DEFAULT]ssl_cert_path[DEFAULT]ssl_key_path 对于 ironic-inspector 现已弃用,因为它使用 oslo.service 作为底层 HTTP 服务,而不是 Werkzeug。请使用 [ssl]cert_file[ssl]key_file

错误修复

  • 现在包含一个新的 rootwrap 过滤器,以允许控制 ironic-inspector 使用的 systemd dnsmasq 服务。 这修复了在使用 systemctl 命令作为配置中 dnsmasq pxe 过滤器中的 dnsmasq_start_commanddnsmasq_stop_command 时出现的权限问题。 参见 bug 2002818

    注意

    该过滤器使用 RDO 发行版使用的 systemd 服务名称 (openstack-ironic-inspector-dnsmasq.service)。

  • 修复了当网络交换机发送 LLDP switch_id 或 port_id 的不完整信息时可能导致内省失败的问题。 验证在端口更新时需要这些字段,此修复现在处理验证异常。

  • 允许 set-attribute 内省规则操作接受 None 作为属性的值。

  • 修复了仅存在 IPv6 地址(没有 IPv4)且配置选项 [processing]add_ports 未设置为 all 时,端口未被收集的问题。如果未收集任何接口,Inspector 将报告“未找到合适的接口”。有关更多信息,请参阅 Story 1744073

8.0.0

新特性

  • 向内省 API 添加了新的参数 manage_boot,以允许禁用启动管理(设置启动设备和重新启动)对于特定节点。 如果设置为 False,则启动应由第三方管理。

    如果新的选项 can_manage_boot 设置为 False(默认值为 True),则 manage_boot 必须显式设置为 False

  • 修改内省规则,以允许将格式应用于操作中字典和列表中嵌套的字符串。

升级说明

  • 将默认 Ironic API 版本更新为 1.38。

    此版本默认在 Bare Metal Inspection 服务与 Bare Metal API 通信时使用。 这是处理插件使用的默认版本,这些插件可以覆盖版本,并且是内省规则使用的默认版本,这些规则可能不会覆盖版本。

    1.38 是最近的 Queens 系列 Bare Metal 服务发布 (10.1.0) 时的 API 版本。

    参见 故事 2002166

错误修复

  • dnsmasq PXE 过滤器不再将从 Bare Metal 服务中删除的端口的 MAC 地址列入白名单。 除非激活了内省或配置中设置了 node_not_found_hook,否则它们将被列入黑名单。 这可确保之前注册的节点不会在未激活节点内省时意外启动内省镜像。 Bug #2001979

  • 当设置启动设备失败时停止内省,因为在这种情况下无法保证节点执行 PXE 启动。

其他说明

  • 已删除弃用的配置选项 [iptables]manage_firewall,请使用 [pxe_filter]driver 设置过滤驱动程序。

7.3.0

新特性

  • dnsmasq PXE 过滤器添加了通配符忽略条目。当节点内省处于活动状态时,或者如果在配置中设置了 node_not_found_hook 时,该忽略条目将从通配符条目中删除。这确保了在未激活节点内省时,未知节点不会意外启动到内省镜像中。

    这使得 dnsmasq PXE 过滤器驱动程序的功能与 iptables PXE 过滤器驱动程序的功能对等,后者使用防火墙规则来阻止 Ironic Inspector 的 DHCP 服务器正在侦听的接口上的任何 DHCP 请求。

  • 向 ironic-inspector 服务发送 SIGHUP 将导致服务重新加载并使用任何更改的可变配置选项的值。

    可变配置选项在 示例配置文件 中通过 注意: 选项 可以在 不重新启动的情况下更改 来指示。

    对不可变配置选项的任何更改都会记录警告。

升级说明

  • 指定用于新发现节点的硬件类型或驱动程序的选项 [discovery]enroll_node_driver 已从 fake 经典驱动程序更改为 fake-hardware 硬件类型。

  • 添加了对 retrying python 库的依赖。

错误修复

  • 修复了端口的 switch_id 字段在处理 LLDP 时,如果 ChassisID 的值为非 MAC 地址,则可能被设置为非 MAC 地址的错误。裸机 API 要求 switch_id 字段必须是 MAC 地址,否则将返回错误。有关详细信息,请参阅 bug 1748022

  • Ironic 内省不再尝试访问 Identity 服务,如果 auth_strategy 选项设置为 noauth 并且 auth_type 选项未设置为 none

  • 周期性 PXE 过滤器更新任务现在会重试从 Bare Metal 服务获取端口列表 5 次(延迟 1 秒),然后再放弃。这确保了临时的网络故障不会导致 ironic-inspector 服务停止。

7.1.0

弃用说明

  • 与 ironic API 访问相关的几个配置选项已被弃用,将在 Rocky 版本中删除。这些包括

    • [ironic]/os_region - 请改用 [ironic]/region_name 选项

    • [ironic]/auth_strategy - 将 [ironic]/auth_type 选项设置为 none 以在 noauth 模式下访问 ironic API

    • [ironic]/ironic_url - 使用 [ironic]/endpoint_override 选项来设置特定的 ironic API 端点地址,如果不需要或无法发现 ironic API 端点(例如在独立模式下)

    • [ironic]/os_service_type - 使用 [ironic]/service_type 选项

    • [ironic]/os_endpoint_type - 使用 [ironic]/valid_interfaces 选项来设置将尝试使用的 ironic 端点类型

  • 与 swift API 访问相关的几个配置选项已被弃用,将在 Rocky 版本中删除。这些包括

    • [swift]/os_service_type - 使用 [swift]/service_type 选项

    • [swift]/os_endpoint_type - 使用 [swift]/valid_interfaces 选项

    • [swift]/os_region - 使用 [swift]region_name 选项

其他说明

  • 此版本中删除了位于 example.conf 的示例配置文件和位于 policy.yaml.sample 的示例策略文件,因为它们现在与文档一起发布。请参阅 示例配置文件示例策略文件

7.0.0

新特性

  • 引入了 dnsmasq PXE 过滤器驱动程序。此驱动程序利用 inotify 设施,以实时重新配置 dnsmasq 服务,以实现端口 MAC 地址的缓存黑-/白列表。

升级说明

  • 引入了一个新的状态 aborting,用于区分节点内省中止前提条件(能够从 waiting 状态转换状态)与中止正在进行中的节点内省所需的活动(关机、设置完成时间戳等)。

  • local_gb 属性的处理从 scheduler 钩子移动到 root_disk_selection

错误修复

  • 现在 node_info.finished(<transition>, error=<error>) 会在一个 DB 事务中更新节点状态以及其他状态属性。

其他说明

6.1.0

新特性

  • 现在启用了 PXE 过滤器驱动程序机制。基于防火墙的过滤已重新实现为 iptables PXE 过滤器驱动程序。

  • 添加基于 oslo.policy 规则的 API 访问策略强制执行。与其他的 OpenStack 服务类似,操作员现在可以使用 policy.yaml 文件配置细粒度的访问策略。有关可用策略及其默认规则的列表,请参阅代码树中的 policy.yaml.sample。可以使用以下命令从代码树生成此文件

    tox -egenpolicy
    

    有关使用和配置 API 访问策略的更多信息,请参阅 oslo.policy 包文档

升级说明

  • 由于 API 访问策略规则的默认值选择,升级后 ironic-inspector 服务的某些 API 部分将对更广泛的用户范围可用

    • 默认情况下,拥有 adminadministratorbaremetal_admin 角色的用户可以访问整个 API(之前仅允许拥有 admin 角色的用户访问)

    • 默认情况下,查看当前的内省状态和显示给定的内省也允许拥有 baremetal_observer 角色的用户访问

    如果这些访问策略不适合您的部署,请在 ironic-inspector 配置目录(通常为 /etc/ironic-inspector)中的 policy.json 文件中覆盖它们。

    有关使用和配置 API 访问策略的更多信息,请参阅 oslo.policy 包文档

弃用说明

  • 防火墙特定的配置选项已从 firewall 组移动到 iptables 组。iptables 组中的所有选项现在都已弃用。

  • 通用的防火墙选项 firewall_update_periodmanage_firewall 已移动到 pxe_filter 组,分别作为 sync_perioddriver=iptables/noop

错误修复

  • node_cache.start_introspection/.add_node 调用期间显式生成 version_id,以避免竞争条件,例如在 两个并发内省调用错误 中的情况。

  • 较旧的 ipmi_address 字段在内省数据中不再优先于较新的 bmc_address 库存字段。这修复了基于 MAC 地址的查找,当 BMC 地址由于任何原因报告为 0.0.0.0 时的问题(请参阅 bug 1714944)。

  • 如果 iptables PXE 过滤器在周期性 sync 调用中遇到意外异常,则将记录该异常,并且过滤器驱动程序将被重置,以便后续的 sync 调用失败(并传播失败,最终退出 ironic-inspector 进程)。

其他说明

  • 允许一个周期性任务在失败时关闭一个 ironic-inspector 进程。

6.0.0

新功能

  • 查询 ironic-inspector 规则 API 现在也会返回关联条件的 invertmultiple 属性。

  • add_ports 添加 disabled 选项,以便可以创建发现的节点,而无需创建端口。

  • link_local_connection 插件添加检查,以使用 lldp_basic 存储的数据;这避免了两次解析 LLDP 数据包。

  • 将节点状态添加到 GET /v1/introspection/<node UUID name>GET /v1/introspection API 响应数据中。

  • 处理钩子现在可以定义对其他处理钩子的依赖关系。ironic-inspector 启动将在启用所需的钩子之前失败。

  • 更新端口上的 pxe_enabled 字段。对于 PXE 启动的端口,该字段设置为 True,对于其余端口,该字段设置为 False。新发现的和现有的端口都会受到影响。

升级说明

  • 实验性 IPMI 凭据支持已从所有版本的 API 中删除。当前的 ironic-inspector API 版本已升级到 1.12 以标记此更改。

  • 在删除 IPMI 凭据设置后,默认 API 版本再次与当前 API 版本同步。

  • 端口创建逻辑已从核心处理代码移动到 validate_interfaces 处理钩子。这可能会影响禁用此钩子或将其替换为其他内容的部署。另外,请确保在此钩子之前放置任何期望创建端口的钩子。

  • 现在需要裸机 API 版本 1.19

  • 删除过时的配置选项:默认部分中的 introspection_delay_driversprocessing 部分中的 log_bmc_address

  • 删除了内省规则中回滚操作的支持。

  • 默认情况下,不再删除旧的状态记录。仅当从 Ironic 中删除节点时,才会删除它们。

弃用说明

  • 配置选项 node_status_keep_time 已被弃用。现在我们能够删除从 ironic 中删除的节点的状态信息,因此此选项没有太大意义,并且 可能会造成混淆

错误修复

  • 处于活动状态下的超时导致 未定义转换错误。此错误已修复,内省现在将以 Timeout 错误结束。

  • 0.0.0.0bmc_address 库存字段中的空字符串现在被正确视为缺失的 BMC 地址。

  • 对于 PostgreSQL,数据库迁移命令 ironic-inspector-dbsync upgrade 总是失败(出现 enum NODE_STATE does not exist)。此错误已修复,迁移现在可以正常工作。

  • 内省规则回滚期间发生值格式错误时,不会使整个内省失败。有关示例和详细调查,请参阅 bug 1686942

5.1.0

错误修复

  • POST /v1/introspection/<Node ID>/data/unprocessed API 在 ironic inspector 开始处理节点时更新 started_at 时间。

  • 在启动时运行 iptables 命令时,会引发 Exception CalledProcessError 异常。该问题是由 eventlet 错误引起的,请参阅:https://github.com/eventlet/eventlet/issues/357。如果 *ironic-inspector* 配置了防火墙管理(使用 manage_firewall = True 配置选项),则该问题才会影响它。

  • ironic-inspector 节点检查的有效状态中错误的置备状态名称 ‘inspectfail’。此问题导致 ironicironic-inspector 之间的状态不一致。例如,如果 ironic 的检查超时时间低于 ironic-inspector 的检查超时时间,并且发生超时,ironic 将节点过渡到 ‘inspect failed’ 置备状态。在这种情况下,当节点检查完成且没有错误时,节点将处于 ‘inspect failed’ 置备状态,而检查状态为 ‘finished’。

5.0.0

新功能

  • 扩展从 GET@/v1/introspection/<Node Id> 返回的内省状态,以包含 uuidstarted_atfinished_at 字段。

  • 添加一个插件来解析原始 LLDP 基本管理、802.1 和 802.3 TLV,并将数据存储在 Swift 中。

  • 添加一个 API 端点来列出内省状态。操作员可以使用此端点获取所有正在运行或之前运行的内省处理的状态。

  • 引入一个新的配置选项 api_max_limit,该选项定义了 API 结果分页时每页的最大项目数。

  • 现在可以通过内省支持 InfiniBand 接口发现。ironic-inspector 将客户端 ID 添加到表示 InfiniBand 接口的 ironic 端口。ironic-inspector 应该配置一个接口列表 firewall.ethoib_interfaces,以指示用于 DHCP 的以太网 over InfiniBand 接口。

  • 节点内省状态现在保存在一个专用的数据库列中。内省现在使用有限状态机。该状态尚未暴露给用户。

  • 添加了对使用带有根设备提示机制的运算符的支持。支持的运算符为 ===!=>=<=><s==s!=s>=s>s<=s<<in><all-in><or>

  • 在内省或发现期间查找节点现在支持多个属性匹配。例如,两个节点可以使用相同的 bmc_address,并且仍然可以通过 MAC 地址来区分。

  • 避免在无盘节点上内省失败。在这种情况下,节点属性 local_gb == 0 已设置。

已知问题

  • 由于 NodeInfo.state 属性的特性(独立于节点信息属性的其余部分进行更新),如果在 (DB) 连接丢失之前 Node.state 列未更新,Node.finished_at 和 Node.error 列可能与 Node.state 列不同步。

升级说明

  • 添加一个新的依赖项,pytz

  • 需要进行数据库迁移才能将某些列从 Float 类型更改为 DateTime 类型。这可能需要一些时间,具体取决于数据库中内省状态的数量。

  • 移除了“ironic”、“swift”和“keystone_authtoken”部分中先前已弃用的身份验证选项。

  • 移除了配置文件中长期弃用的“discoverd”部分的支持。

  • 配置选项“introspection_delay_drivers”的默认值已更改为 .*,这意味着默认情况下,“introspection_delay”现在应用于所有驱动程序。将“introspection_delay”设置为 0 以禁用延迟。

  • 引入了 Node.state 和 Node.version_id 数据库列。

  • 内省状态列默认设置为状态 finished,除非节点行上的内省错误列值不为 null,则节点状态设置为 error

  • 不再强制执行节点 bmc_address 的唯一性。

  • 放松了 attributes 表的主键,从 attributes.name, attributes.value 列对更改为新的列 attributes.uuid

弃用说明

  • 配置选项“log_bmc_address”已被弃用。

  • 配置选项“introspection_delay_drivers”已被弃用。

错误修复

  • 将数据库列 started_atfinished_at 从类型 Float 更改为类型 DateTime,以便时间戳正确地适合这些列。

  • 修复了内省超时时定期清理因 DBDeadlock 失败的错误。

  • 确保配置选项 firewall.firewall_update_periodclean_up_period 应用于在读取配置文件后 periodic_clean_upperiodic_update 任务。

  • LLC 钩子现在将底盘 ID 和端口 ID MAC 地址格式化为 ironic 期望的 Unix 格式。

  • LLC 钩子确保将正确的信息传递给 patch_port 函数

  • LLC 钩子不再假定所有检查到的端口都已添加到 ironic

  • 不再使用环回 BMC 地址进行查找(例如,在使用 virtualbmc 时)。

  • 内省在具有相同 IPMI 地址但不同 IPMI 端口的节点上失败。

其他说明

  • 默认 API 版本暂时固定为 1.8(在弃用设置 IPMI 凭据之前)。在删除设置 IPMI 凭据的支持后,它将重置为最新版本。

4.2.0

新功能

  • 添加新的处理钩子 pci_devices,用于根据节点上存在的 PCI 设备和 [pci_devices] 别名配置选项中的规则设置节点功能。需要在 IPA 中启用“pci-devices”收集器。

错误修复

  • 在 SQL 语句中使用单引号括起字符串。修复了使用 PostgreSQL 作为数据库后端时发生的崩溃。

  • 当从 swift 获取数据失败时,将节点设置为错误状态。

4.1.0

新功能

  • 添加了 GenericLocalLinkConnectionHook 处理插件,用于处理内省期间返回的 LLDP 数据,并使用该数据在 Ironic 节点的端口本地链路连接信息中设置端口 ID 和交换机 ID。

  • 添加了配置选项 processing.power_off,默认值为 True,允许在内省后保持节点通电状态。

错误修复

  • 修复了设置非字符串 ‘value’ 字段的规则操作。由于非字符串值显然不是格式化的值,因此添加了检查以避免 AttributeError 异常。

4.0.0

序言

从此版本开始,仅支持 ironic-python-agent (IPA) 作为内省 ramdisk。

新功能

  • 添加了一个新的“capabilities”处理钩子,用于检测 CPU 和启动模式功能(后者默认禁用)。

  • 存储 ramdisk 日志的文件名现在可以通过“ramdisk_logs_filename_format”选项进行自定义。

升级说明

  • 存储 ramdisk 日志的默认文件名已更改为仅包含节点 UUID(如果已知)和当前日期时间。现在附加了一个适当的“.tar.gz”扩展名。

  • API “POST /v1/rules” 在创建成功时返回 201 响应代码,而不是 200。API 版本已升级到 1.6。API 低于 1.6 继续返回 200。

  • 默认 API 版本已更改为 Inspector 可以支持的最小值到最大值。

  • 删除了对旧的基于 bash 的 ramdisk 的支持。请在升级之前切换到 IPA。

  • 删除了已弃用的 “root_device_hint” 别名,用于 raid_device 插件。

错误修复

  • 修复了“/v1/continue” 在意外异常时返回 HTTP 500,而不是 HTTP 400。

  • 修复了规则创建端点的响应返回代码,现在成功时返回 201 而不是 200。

  • “size” 根设备提示现在始终转换为整数,以与 IPA 保持一致。

3.3.0

新功能

  • Ironic-Inspector 现在使用 keystoneauth 和适当的 auth_plugins 与 Ironic 和 Swift 通信,而不是 keystoneclient。它允许为每个服务精细地调整身份验证。对于每个服务,都会创建并重用 keystone 会话,从而最大限度地减少对 Keystone 的身份验证请求次数。

  • 添加了在 API 中使用 Ironic 节点名称而不是 UUID 的支持。请注意,在内省状态 API 中使用节点名称将需要服务向 Ironic 发出调用。

  • 引入了 API “POST /v1/introspection/UUID/data/unprocessed”,用于重新应用存储的数据上的内省。

升级说明

  • 建议操作员在 [ironic] 和 [swift] 配置部分中指定适当的 keystoneauth 插件及其适当的设置。包含向后兼容性,支持之前的身份验证选项。不再支持从 [keystone_authtoken] 配置部分使用 Ironic 和 Swift 的身份验证信息。

  • 将 ramdisk 日志的处理移出了“ramdisk_error”插件,因此禁用它将不再禁用 ramdisk 日志的处理。与之前一样,您可以将“ramdisk_logs_dir”选项设置为一个空值(默认值)以禁用存储 ramdisk 日志。

弃用说明

  • Ironic 或 Swift 的大多数当前身份验证选项已被弃用,将在未来的版本中删除。请配置 keystoneauth auth 插件身份验证。

错误修复

  • 修复了一个问题,该问题导致在 inspector 尝试将某些 eDeploy 数据转换为整数时,出现未处理的 TypeError 异常。

  • 修复了防火墙代码中的一个回归问题,导致对已经检查过的节点重新运行内省失败。

  • 修复了“is-empty”条件,使其在缺少值时返回 True。

  • 查找过程现在使用所有有效的 MAC 地址,而不仅仅是将被用于创建端口的 MAC 地址。

  • “enroll” node_not_found_hook 现在使用所有有效的 MAC 地址来检查节点是否存在,而不仅仅是将被用于创建端口的 MAC 地址。

  • ramdisk 日志现在存储在所有预处理错误中,而不仅仅是 ramdisk 本身报告的错误。这需要将 ramdisk 日志处理从“ramdisk_error”插件移动到通用的处理代码。

3.2.0

新功能

错误修复

  • 如果节点处于“enroll”状态,则不要在完成关机时失败。处于“enroll”状态的节点不应具有电源凭据。

3.1.0

新功能

  • 引入了 API “POST /v1/introspection/<UUID>/abort”,用于中止内省过程。

  • 新的条件插件“contains”和“matches”允许将值与正则表达式匹配。

  • 添加了新的条件插件“is-empty”,它允许匹配空字符串、列表、字典或 None。

  • 添加了一个 node_not_found 钩子 - enroll,它允许自动发现 Ironic 的节点。

  • 条件现在支持比较节点信息中的字段;

  • 内省规则条件获得了一个新的通用“invert”参数,它反转条件的結果。

升级说明

  • 切换所需的 Ironic API 版本为 ‘1.11’,它支持 ‘enroll’ 状态。

  • “max_concurrency”设置的最小值现在为 2。

  • 删除了对在处理钩子中传递“node_patches”和“ports_patches”参数的弃用支持。

  • ramdisk 日志不再是存储到 Swift 的数据的一部分,也不由 API 返回。

  • 内省规则操作 ‘set-attribute’、‘set-capability’ 和 ‘extend-attribute’ 不再对不匹配规则的节点产生相反的效果。

弃用说明

  • 内省规则的回滚操作已被弃用。没有内置操作使用它们,第三方应尽快停止使用它们。

  • 使用 root_device_hint 别名用于 raid_device 插件已被弃用。

错误修复

  • 修复了 extra_hardware 插件与 Swift 的连接。

  • 仅当活动 MAC 地址列表发生变化时才发出 iptables 调用。

  • 删除了 ‘set-attribute’、‘set-capability’ 和 ‘extend-attribute’ 内省规则操作中的回滚操作,因为它们令人困惑、完全没有文档记录,并且破坏了一些实际用例(例如,设置驱动程序字段)。

  • 自省规则(例如,设置属性操作)现在接受不带前导斜杠的“path”字段,就像 Ironic CLI 一样。

其他说明

  • 切换到 Futurist 库用于异步任务。

  • 当在 Inspector 缓存中未找到节点时,错误日志级别已从错误更改为信息级别。这是因为 not_found_hook 可能会处理这种情况,因此不再是错误。

3.0.0

序言

从此版本开始,ironic-python-agent 成为默认的自省 ramdisk,旧的基于 bash 的 ramdisk 将被弃用。

新特性

  • Inspector 不再需要自省 ramdisk 中旧式的“local_gb”、“memory_mb”、“cpus”和“cpu_arch”字段。为了与旧的 ramdisk 兼容,这些字段仍然受支持。

升级说明

  • 移除了对维护模式下节点的自省的支持,该支持在 liberty 周期中已被弃用。请使用“inspecting”、“manageable”或“enroll”状态代替。

  • 如果 ironic 节点上指定了 root 设备提示,但未使用 ironic-python-agent 作为自省 ramdisk,则 root_disk_selection 处理 hook 现在将报错。

弃用说明

  • 使用旧的基于 bash 的 ramdisk 已被弃用,请尽快切换到 ironic-python-agent。

错误修复

其他说明

  • 通过删除防火墙日志中的换行符并默认禁用一些第三方调试消息,使 debug 级别日志记录更加紧凑。

  • 改进 ramdisk 日志收集的日志记录。

  • 处理期间的日志记录现在在标识节点方面更加一致。现在,我们尝试使用节点 UUID、BMC 地址和 PXE MAC 地址(如果可用)来为日志消息添加前缀。可以通过“processing”部分中的新选项“log_bmc_address”来禁用记录 BMC 地址。

2.3.0

序言

此版本包括通过 Sphinx 自动生成 文档

关键问题

安全问题

错误修复

  • 当 add_ports 设置为 pxe 时,如果 ramdisk 未返回 PXE MAC,则记录警告。

  • 在处理节点时,获取节点 UUID 上的锁。

其他说明

  • IPA (ironic-python-agent) 现在在 devstack 插件中完全受支持,并将成为下一个版本的默认 ramdisk。

  • 允许自动生成数据库迁移。

  • 引入了通过 SphinxReST 进行新的文档生成。

    • 单独的 文档 文件夹包括 构建

    • tox 的集成作为 文档 目标

    • makefile 用于手动构建

    • Openstack Theme 支持