2023.1 系列 (11.2.0 - 11.4.x) 发布说明¶
2023.1-eom¶
错误修复¶
修复了一个问题,如果红鱼 BMC 地址使用方括号括起来的 IPv6 地址,则检查将失败。请参阅错误:2036455。
如果检查过程收集到的 LLDP 原始数据包含非 UTF-8 信息,解析器将失败并中断检查过程。此补丁通过排除格式错误的数据并在日志中添加条目以提供有关失败 TLV 的信息来解决此问题。
修复了基于角色的访问控制状态和功能,使其与 OpenStack 社区 RBAC 目标保持一致,其中包括默认支持
service角色,以便无需admin用户名即可配置服务间通信。很大程度上,这些更改被忽略了,因为 Inspector 服务被认为是一个“仅限管理员”的服务。同时,为了与整体社区立场变化保持一致,即
admin角色在没有明确system范围的情况下就足够了。为了帮助确保高级别的安全性,还为manager角色添加了显式测试,该角色不可用,因为该角色保留给租户项目内的管理功能。
11.3.0¶
升级说明¶
SQLAlchemy 的最低版本现在是
1.4.0,为未来预计发布的 SQLAlchemy2.0.0做准备。
Oslo.DB 的最低版本现在是
12.1.0,为未来预计发布的 SQLAlchemy2.0.0做准备。
从低于
7.3.0的版本升级数据库模式不受支持。请先升级到中间版本,然后再升级到此版本。
弃用说明¶
插件维护者应注意,节点缓存对象字段
version_id字段不再使用。为了兼容性,如果已存储,它仍然由数据模型返回,但 Inspector 不会在其正常操作过程中更新该字段。
错误修复¶
修复了一个问题,即节点数据库响应会在 inspector 进程的 RAM 中被孤立,并且不会被垃圾回收。我们在处理数据库连接锁仍然存在时发现了并重现了这个问题。有关更多详细信息,请参阅 story 2009727。
其他说明¶
直接使用数据库的插件维护者需要更新他们的插件。具体来说,数据库 API 已被划分为使用
enginefacade,并具有专门的读取器和写入器模型,以期将来支持 SQLAlchemy 2.0,并在未来某个时候将 Inspector 合并到 Ironic 中。数据库操作现在通过ironic_inspector.db.api模块执行,而之前它们分散在ironic_inspector.db和ironic_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 中按状态过滤的支持。请参阅 story 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范围,并且策略规则中的唯一角色是admin和reader。
升级说明¶
[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=True和enforce_scope=True时,才会强制执行新策略,否则将使用现有的弃用策略。依赖于具有baremetal_admin或baremetal_observer角色的用户帐户需要具有系统范围的admin或reader角色才能在使用新策略时使用 API。
弃用说明¶
自 Victoria 开发周期以来,
oslo.policy库已弃用旧策略文件的使用。因此,此弃用在 Wallaby 中被注意到,预计oslo.policy将来会删除对它的支持。因此,操作员需要转换为 YAML 策略文件。有关迁移任何自定义策略文件的详细信息,请参阅升级说明。
默认情况下仍然强制执行以前的策略,但现在已弃用,将在未来的版本中删除。
10.5.0¶
新特性¶
添加了在代理后设置 ironic inspector 的可能性,同时允许资源 API 返回的链接保持正确。Inspector 现在尊重通过 API 请求传递的以下标头:
X-Forwarded-For、X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Port、X-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_strategy为http_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处理钩子中的原始数据不再存储在 Swift 中的名为extra_hardware-<node UUID>的对象中。相同的信息已经作为未处理的内省数据的一部分可用,而无需对 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_boot为False,则内省后不再尝试关闭节点。
内省现在尊重节点
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¶
新特性¶
为处于
active或rescue状态的裸机节点添加了将内省数据发布到 API 的功能。此功能可能对希望定期更新内省数据的数据中心运营商有用。要启用此功能,请将
[processing]permit_active_introspection设置为True。设置此选项后,将覆盖处于active或rescue状态的节点的[processing]power_off的值。
添加了对使用 IPv6 BMC 地址注册节点的支持。引入了配置选项
[discovery]enabled_bmc_address_version,用于指定 BMC 地址首选 IP 版本的顺序。
升级说明¶
已删除
ironic部分中的已弃用选项os_region、auth_strategy、ironic_url、os_service_type和os_endpoint_type。请改用 keystoneauth 选项。
已删除
[swift]部分中的已弃用配置选项os_service_type、os_region和os_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/continueAPI 端点允许 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,以促进受支持的内省数据存储后端之间的内省数据迁移。当前可用的内省数据存储后端是:database和swift。例如,要将存储在 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 版本,可能的值为4和6,默认值为4。当设置为6时,iptables pxe 过滤器将使用ip6tables命令来管理 DHCPv6 端口547的规则。
添加了新的内省规则操作,用于在节点上添加或删除特性:
add-trait和remove-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_command和dnsmasq_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。
错误修复¶
dnsmasqPXE 过滤器不再将从 Bare Metal 服务中删除的端口的 MAC 地址列入白名单。 除非激活了内省或配置中设置了node_not_found_hook,否则它们将被列入黑名单。 这可确保之前注册的节点不会在未激活节点内省时意外启动内省镜像。 Bug #2001979。
如果设置启动设备失败,则停止内省,因为在这种情况下无法保证节点执行 PXE 启动。
其他说明¶
已删除弃用的配置选项
[iptables]manage_firewall,请使用[pxe_filter]driver设置过滤驱动程序。
7.3.0¶
新功能¶
为
dnsmasqPXE 过滤器添加了通配符忽略条目。当节点内省处于活动状态时,或者如果在配置中设置了node_not_found_hook时,该忽略条目将从通配符条目中删除。这确保了在未激活节点内省时,未知节点不会意外启动到内省镜像中。这使得
dnsmasqPXE 过滤器驱动程序的功能与iptablesPXE 过滤器驱动程序的功能对等,后者使用防火墙规则来阻止 Ironic Inspector 的 DHCP 服务器正在侦听的接口上的任何 DHCP 请求。
向 ironic-inspector 服务发送 SIGHUP 将导致服务重新加载并使用可变配置选项的任何更改后的值。
可变配置选项在 示例配置文件 中以
Note: This option can be changed without restarting的形式指示。对不可变配置选项的任何更改都会记录警告。
升级说明¶
指定用于新发现节点的硬件类型或驱动程序的选项
[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选项
其他说明¶
7.0.0¶
新特性¶
引入了 dnsmasq PXE 过滤器驱动程序。此驱动程序利用
inotify机制,以实时重新配置 dnsmasq 服务,以实现端口 MAC 地址的缓存黑-/白列表。
升级说明¶
引入了一个新的状态
aborting,用于区分节点内省中止前提条件(能够从waiting状态进行状态转换)与中止正在进行中的节点内省所需的活动(关机、设置完成时间戳等)。
将
local_gb属性的处理从scheduler钩子移动到root_disk_selection。
错误修复¶
现在,
node_info.finished(<transition>, error=<error>)会在单个 DB 事务中更新节点状态以及其他状态属性。
其他说明¶
位于
ironic_inspector/test/inspector_tempest_plugin/中的 tempest 插件代码已被删除。Tempest 插件代码已迁移到项目 openstack/ironic-tempest-plugin。这是 OpenStack 范围内的 Queens 周期目标。
6.1.0¶
新特性¶
现在启用了 PXE 过滤器驱动程序机制。基于防火墙的过滤已重新实现为
iptablesPXE 过滤器驱动程序。
添加了基于 oslo.policy 规则的 API 访问策略实施。与其他的 OpenStack 服务类似,操作员现在可以使用
policy.yaml文件配置细粒度的访问策略。有关可用策略及其默认规则的列表,请参阅代码树中的 policy.yaml.sample。可以使用以下命令从代码树生成此文件tox -egenpolicy
有关使用和配置 API 访问策略的更多信息,请参阅 oslo.policy 包文档。
升级说明¶
由于 API 访问策略规则的默认值选择,升级后 ironic-inspector 服务的某些 API 部分将对更广泛的用户可用
默认情况下,对整个 API 的访问权限授予具有
admin、administrator或baremetal_admin角色的用户(之前仅允许具有admin角色的用户访问)。默认情况下,列出当前内省状态和显示给定内省的用户也允许具有
baremetal_observer角色的用户。
如果这些访问策略不适合您的部署,请在 ironic-inspector 配置文件(通常为
/etc/ironic-inspector)中的policy.json文件中覆盖它们。有关使用和配置 API 访问策略的更多信息,请参阅 oslo.policy 包文档。
弃用说明¶
防火墙特定的配置选项已从
firewall移动到iptables组。iptables组中的所有选项现已弃用。
通用的防火墙选项
firewall_update_period和manage_firewall已移动到pxe_filter组,分别作为sync_period和driver=iptables/noop。
错误修复¶
在
node_cache.start_introspection/.add_node调用期间,现在显式生成version_id,以避免竞争条件,例如在 两个并发内省调用错误 的情况下。
较旧的
ipmi_address字段在内省数据中不再优先于较新的bmc_address库存字段。这修复了基于 MAC 地址的查找,当 BMC 地址由于任何原因报告为0.0.0.0时的问题(请参阅 bug 1714944)。
如果
iptablesPXE 过滤器在周期性sync调用中遇到意外异常,则该异常将被记录,并且过滤器驱动程序将被重置,以便后续的sync调用失败(并传播失败,最终退出 ironic-inspector 进程)。
其他说明¶
允许一个周期性任务在 ironic-inspector 进程失败时关闭该进程。
6.0.0¶
新特性¶
查询 ironic-inspector 规则 API 现在也会返回关联条件的
invert和multiple属性。
为
add_ports添加disabled选项,以便可以创建发现的节点,而无需创建端口。
从
link_local_connection插件添加检查,以使用lldp_basic存储的数据;这避免了两次解析 LLDP 数据包。
将节点状态添加到
GET /v1/introspection/<node UUID 或 name>和GET /v1/introspectionAPI 响应数据中。
处理钩子现在可以定义对其他处理钩子的依赖关系。ironic-inspector 启动将在启用所需的钩子之前失败。
更新端口上的
pxe_enabled字段。对于 PXE 启动的端口,该字段设置为True,对于其余端口,该字段设置为False。新发现的和现有的端口都会受到影响。
升级说明¶
实验性 IPMI 凭据支持已从所有版本的 API 中删除。当前的 ironic-inspector API 版本已升级到 1.12 以标记此更改。
在删除 IPMI 凭据设置后,默认 API 版本再次与当前 API 版本同步。
端口创建逻辑已从核心处理代码移动到
validate_interfaces处理钩子。这可能会影响禁用此钩子或将其替换为其他内容的部署。另外,请确保在此钩子之前放置任何期望创建端口的钩子。
现在需要裸机 API 版本 1.19。
删除过时的配置选项:默认部分中的
introspection_delay_drivers和processing部分中的log_bmc_address。
删除了内省规则中回滚操作的支持。
默认情况下,不再删除旧的状态记录。仅当从 Ironic 中删除节点时,才会删除它们。
弃用说明¶
配置选项
node_status_keep_time已被弃用。现在我们能够删除从 ironic 中删除的节点的状态信息,因此此选项没有太大意义,并且 可能会造成混淆
错误修复¶
处于活动状态下的超时导致 未定义转换错误。此错误已修复,内省现在将以
Timeout错误结束。
0.0.0.0和bmc_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”。此问题导致 ironic 和 ironic-inspector 之间的状态不一致。例如,如果 ironic 的检查超时时间低于 ironic-inspector 的检查超时时间,并且发生检查超时,ironic 将节点过渡到“inspect failed”配置状态。在这种情况下,当节点检查完成且没有错误时,节点将处于“inspect failed”配置状态,而检查状态为“finished”。
5.0.0¶
新特性¶
扩展从
GET@/v1/introspection/<Node Id>返回的内省状态,以包含uuid、started_at和finished_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”已被弃用。
通过 ironic-inspector 设置 IPMI 凭据的支持已被弃用,并将完全在 Pike 中删除。引入了新的 API 版本 1.9,该功能已被停用。有关原因,请参阅 https://bugs.launchpad.net/ironic-python-agent/+bug/1654318。
配置选项“introspection_delay_drivers”已被弃用。
错误修复¶
将数据库列
started_at和finished_at从类型 Float 更改为类型 DateTime,以便时间戳正确地适合这些列。
修复了内省超时时定期清理因 DBDeadlock 失败的错误。
确保配置选项
firewall.firewall_update_period和clean_up_period应用于在读取配置文件后periodic_clean_up和periodic_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。
删除了“raid_device”钩子的“root_device_hint”别名,该别名已被弃用。
错误修复¶
修复了“/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 发出调用。
删除了数据库迁移降级。有关数据库迁移/回滚的更多信息,请参见此处 https://docs.openstack.org/openstack-ops/content/ops_upgrades-roll-back.html
引入了 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¶
新特性¶
为 Ironic Inspector 添加了 CORS 支持中间件,允许部署者可选地配置规则,根据这些规则,javascript 客户端可以打破同源策略并直接访问 API。
错误修复¶
当没有节点处于内省状态且未设置“node_not_found_hook”时,现在完全禁用 DHCP。 这降低了如果它们的网卡未在 Ironic 中注册,则向错误节点提供 DHCP 的可能性。 详情请参见 https://bugs.launchpad.net/ironic-inspector/+bug/1557979 和 https://bugzilla.redhat.com/show_bug.cgi?id=1317695。
如果节点处于“enroll”状态,则不要在完成关机时失败。处于“enroll”状态的节点不应具有电源凭据。
3.1.0¶
新特性¶
引入了 API “POST /v1/introspection/<UUID>/abort”,用于中止自省过程。
新的条件插件“contains”和“matches”允许将值与正则表达式匹配。
添加了新的条件插件“is-empty”,它允许匹配空字符串、列表、字典或 None。
添加了一个新的 node_not_found 钩子 - enroll,它允许自动发现 Ironic 的节点。
条件现在支持比较节点信息中的字段;
操作支持格式化以从自省数据中获取值。请参见 https://docs.openstack.org/developer/ironic-inspector/usage.html#introspection-rules
自省规则条件获得了一个新的通用“invert”参数,该参数反转条件的結果。
升级说明¶
将所需的 Ironic API 版本切换到“1.11”,该版本支持“enroll”状态。
“max_concurrency”设置的最小值现在是 2。
删除了对将“node_patches”和“ports_patches”参数传递给处理钩子的弃用支持。
ramdisk 日志不再是存储到 Swift 的数据的一部分,也不由 API 返回。
自省规则操作“set-attribute”、“set-capability”和“extend-attribute”不再对不匹配规则的节点产生相反的效果。
弃用说明¶
自省规则的回滚操作已被弃用。没有内部操作使用它们,第三方应尽快停止使用它们。
使用 raid_device 插件的 root_device_hint 别名已被弃用。
错误修复¶
修复了 extra_hardware 插件与 Swift 的连接。
仅当活动 MAC 地址列表发生变化时才发出 iptables 调用。
从“set-attribute”、“set-capability”和“extend-attribute”自省规则操作中删除了回滚操作,因为它们令人困惑、完全没有文档记录,并且破坏了一些实际用例(例如设置驱动程序字段)。
自省规则(例如 set-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 节点上指定了根设备提示,但未使用 ironic-python-agent 作为自省 ramdisk,则 root_disk_selection 处理钩子现在将出错。
弃用说明¶
使用旧的基于 bash 的 ramdisk 已被弃用,请尽快切换到 ironic-python-agent。
错误修复¶
修复了预处理期间发生错误时向用户显示的令人困惑的错误消息 (https://launchpad.net/bugs/1523907)。
数据处理 API 端点现在验证从 ramdisk 接收到的数据是否实际上是 JSON 对象,而不是稍后在内部出错(问题 https://bugs.launchpad.net/bugs/1525876)。
其他说明¶
通过删除换行符来使调试级别日志更紧凑,并默认禁用一些第三方调试消息。
改进了 ramdisk 日志收集的日志记录。
处理过程中的日志记录现在在如何标识节点方面更加一致。现在,我们尝试使用节点 UUID、BMC 地址和 PXE MAC 地址(如果可用)来为日志消息添加前缀。可以通过“processing”部分中的新“log_bmc_address”选项禁用记录 BMC 地址。
2.3.0¶
序言¶
此版本包括通过 Sphinx 自动生成 docs。
关键问题¶
安全问题¶
切勿启用 Flask 调试模式,因为它可能允许远程代码执行。有关详细信息,请参见 https://bugs.launchpad.net/bugs/1506419。
错误修复¶
当 add_ports 设置为 pxe 但 ramdisk 未返回 PXE MAC 时,记录警告。
在处理节点 UUID 时获取锁。
其他说明¶
IPA (ironic-python-agent) 现在完全支持 devstack 插件,并将成为下一个版本的默认 ramdisk。
允许自动生成数据库迁移。
-
单独的 doc 文件夹包括 source 和 build
与 tox 作为 docs 目标集成
makefile 用于手动构建