Newton 系列 (6.0.0 - 6.2.x) 发行说明

6.3.0

错误修复

  • 将 driver-requirements.txt 中 python-oneviewclient 的最低版本更新到 2.5.1。需求文件中之前的最低版本是 2.0.2,已经非常过时,导致驱动程序无法使用此版本。通过此更改,新的最低版本适用于驱动程序,也使 stable/newton 的 CI 正常工作。

6.2.4

错误修复

6.2.3

安全问题

  • 在使用 ssh 供电驱动程序并请求节点详细信息时,私钥现在会被屏蔽。

错误修复

  • 修复了一个导致 CPU 使用率随着时间推移而增加的 bug。

  • 包含任意对象在 kwargs 中的 Ironic 异常通过 RPC 发送时会导致 oslo_messaging 序列化器失败。这导致 ironic API 出现 500 错误,等待来自 conductor 的响应超时。从这个版本开始,异常的 kwargs 中包含的所有不可序列化的对象都会被丢弃。如果错误将被服务返回取决于配置选项 [DEFAULT]fatal_exception_format_errors

  • 修复了一个问题,该问题导致 ironic 无法更改当前被 OneView 使用的节点的电源状态。

  • PXEBoot 驱动程序接口现在正确支持 netboot 节点在 ACTIVE 状态下的接管。在接管期间,首先会重新创建 PXE 环境,然后再尝试将其切换到“服务模式”。

6.2.2

错误修复

  • 在 ipmitool 供电驱动程序的 reboot 中添加了缺失的错误检查,以便如果关机失败,reboot 也可以正确失败。

  • 修复了一个问题,该问题导致 DRAC 驱动程序 (pxe_drac) get_bios_config() vendor passthru 方法意外地引发 AttributeError 异常。该方法现在再次返回当前的 BIOS 配置。有关更多信息,请参阅 https://bugs.launchpad.net/ironic/+bug/1637671

  • 修复了 oneview 驱动程序中一个问题,该问题可能导致检查节点是否被 oneview 使用的周期性任务过早结束。

  • 修复了一个关于不正确的 base socat 命令的问题,该问题阻止了控制台的使用。

  • 从默认 iPXE 脚本中删除“dhcp”命令。它是多余的,甚至可能在配置 NIC 不是第一个 NIC 时导致启动失败。

  • 修复了一个问题,如果将格式错误的 MAC 地址传递给 Ironic API 中的查找机制,节点部署将无法继续。例如,如果节点包含 Infiniband 卡,则查找由于代理 ramdisk 传递一个包含 20 个八位字节(而不是预期的 6 个八位字节)的 MAC 地址(或 GID)作为查找请求的一部分而失败。现在忽略无效地址。

6.2.0

新特性

  • 添加了对 InfiniBand 网络的支持,以允许对 InfiniBand 进行硬件检查和 PXE 启动。

  • 在 portgroup 对象中添加了 standalone_ports_supported 字段。该字段指示此 portgroup 的成员端口是否可以用作独立端口。默认值为 True。

  • 为基于 iSCSI 的部署添加了对整个磁盘镜像的 configdrive 支持。这将适用于仅 UEFI 或仅 BIOS 镜像。它不适用于能够从 BIOS 和 UEFI 启动模式启动的混合镜像。

  • 添加了 DRAC 驱动程序可用的带外检查接口。

  • 为 DRAC 驱动程序的 vendor-passthru 接口添加了 list_unfinished_jobs 方法。它提供了一种在提交 BIOS 配置更改后检查远程配置作业状态的方法。

  • 使用通用 RAID 接口为 DRAC 驱动程序添加了带外 RAID 管理,这使得该功能可通过手动清理步骤获得。

  • 添加了新的配置选项 [drac]/query_raid_config_job_status_interval。在 Ironic 在 DRAC 卡上创建 RAID 配置作业后,它将继续检查配置作业的状态更新,以确定 RAID 配置是否在此间隔内成功完成。默认值为 120 秒。

  • 添加了一个新的 [deploy]/erase_devices_metadata_priority 配置选项,以允许操作员配置“erase_devices_metadata”清理步骤的优先级(或禁用它)。

  • 默认情况下,ironic-conductor 服务会在本地缓存节点的部署 ramdisk 和内核镜像,并通过单独的 HTTP 服务器提供它们。一个新的 [pxe]/ipxe_use_swift 配置选项(默认禁用)允许通过 Swift 临时 URL 直接从对象存储访问镜像。这仅适用于启用 iPXE(通过 [pxe]/ipxe_enabled 配置选项)且镜像存储在 Glance/Swift 的情况下。对于需要非本地启动的分区镜像的用户镜像,默认行为(本地缓存和 HTTP 服务器)仍然适用于用户镜像内核和 ramdisk。

  • 添加了一个新的策略规则,可用于屏蔽实例特定的秘密,例如 configdrive 内容或用于存储 configdrive 或实例镜像的临时 URL。这类似于密码已被屏蔽的方式。

升级说明

  • pxe_drac 驱动程序的 inspect 接口已切换到使用带外检查。对于带内检查,节点应更新为使用 pxe_drac_inspector 驱动程序。

  • 默认情况下启用新的“erase_devices_metadata”清理步骤(如果可用)在 ironic-python-agent 项目中(优先级 99)。擦除设备元数据通常非常快,不应增加太多(如果有的话)整体清理过程的时间。希望禁用此清理步骤的操作员可以通过将 [deploy]/erase_devices_metadata_priority 配置选项设置为 0 来执行此操作。

  • python-ironic-inspector-client 的最低要求版本已提升到 1.5.0(作为 Mitaka 周期的一部分发布)。

  • 默认情况下,实例秘密将在 API 响应中被屏蔽。希望向特定用户公开 configdrive 或实例镜像的操作员需要更新其 policy.json 文件并授予相关的 keystone 角色。

  • proliantutils(iLO 驱动程序所需)的最低要求版本已提升到 2.1.11。此版本包括修复了 python request 库版本 2.11.0 引起的错误、Proliant Gen7 支持和基于 iLO 的 RAID 配置。

  • python-scciclient(iRMC 驱动程序所需)的最低要求版本已提升到 0.4.0。

  • 在 ironic 中注册 OneView 节点时,操作员应确保 server_profile_template_uri 字段设置在 properties/capabilities 中,而不再设置在 driver_info 中。否则,节点将在验证时失败。

  • PXE + UEFI 的默认引导加载程序已从 ELILO 更改为 Grub2,因为 ELILO 已经不再积极开发。依赖 ELILO 的操作员应显式设置 [pxe]/uefi_pxe_bootfile_name[pxe]/uefi_pxe_config_template 配置选项为 ELILO ROM 和配置模板。

弃用说明

  • ClusteredComputeManager 已弃用。

    Nova 的 Newton 版本为 ironic virt 驱动程序添加了功能,以支持无需使用我们称之为 ClusteredComputeManager 的 hack 的多个计算主机。因此,我们将此不受支持的组件标记为已弃用,并计划在 Ocata 开发周期结束前将其删除。

  • 以下驱动程序被标记为不受支持,因此已弃用。这些驱动程序中的一些或全部都可能在 Ocata 周期或之后删除。

    • agent_amt

    • agent_iboot

    • agent_pyghmi

    • agent_ssh

    • agent_vbox

    • agent_wol

    • fake_ipminative

    • fake_ssh

    • fake_seamicro

    • fake_iboot

    • fake_snmp

    • fake_vbox

    • fake_amt

    • fake_msftocs

    • fake_wol

    • pxe_ipminative

    • pxe_ssh

    • pxe_vbox

    • pxe_seamicro

    • pxe_iboot

    • pxe_snmp

    • pxe_amt

    • pxe_msftocs

    • pxe_wol

安全问题

  • Configdrive 通常包含敏感信息。用户可以上传自己的镜像,这些镜像也可能包含敏感信息。Agent 驱动程序可以将此信息存储在 Swift 临时 URL 中,以便从 Agent ramdisk 访问。这些 URL 被认为是敏感信息,因为它们授予未经身份验证的访问敏感信息的权限。现在,我们只选择性地向特权用户公开此信息,而之前所有经过身份验证的用户都可以访问。

错误修复

  • 节点 driver_info 中的 dynamic_allocation 标志以前仅接受布尔值。现在它也接受字符串“t”、“true”、“on”、“y”、“yes”或“1”作为 True,以及字符串“f”、“false”、“off”、“n”、“no”或“0”作为 False。这些匹配不区分大小写。

  • 修复了一个问题,该问题阻止 ironic-conductor 服务使用配置选项中的间隔值,用于周期性任务。而是使用了默认值。

  • API 现在在指定超过 255 个字符的机箱描述时返回适当的错误消息。

  • 修复了 DRAC 部署接口在未调用任何清理步骤的情况下调用自动化清理时失败的问题。

  • 当使用 iLO 驱动程序在节点上未显式设置引导模式时,ironic 会自动根据硬件功能选择引导模式。这会使部署者感到困惑,因为这些因素是系统特定的且不可配置的。为了确保可预测的行为,添加了一个新的配置参数 [ilo]/default_boot_mode,以允许部署者显式设置默认值。此选项的默认值保持现有部署的行为一致性。

  • Ironic Inspector 检查接口现在将从服务目录中获取服务端点,如果未提供“service_url”并且启用了 keystone 支持。

  • 修复了一个问题,在设置使用“ipminative”管理接口的节点的引导设备时,未考虑引导模式(UEFI 或 BIOS)。它会错误地将 UEFI 切换为传统 BIOS 模式作为请求的一部分。

  • 修复了一个问题,在设置使用“ipmitool”管理接口的节点的引导设备时,未考虑引导模式(UEFI 或 BIOS)。它会在某些硬件型号上错误地从 UEFI 切换到传统 BIOS 模式。

  • 更新创建配置端口逻辑,仅在未创建 neutron 端口时才失败。如果创建了至少一个 neutron 端口,则继续部署。这是 flat 场景的默认行为。

  • 修复了在维护模式下更新处于活动状态的端口上的 MAC 地址的问题(之前返回 HTTP 500)。

  • 返回 HTTP 400,用于请求更新未设置维护模式的处于活动状态的端口上的 MAC 地址(之前返回 HTTP 500)。

6.1.0

新功能

  • OneView 驱动程序现在支持 OneView 中节点的动态分配,从而可以更好地与非 OpenStack 用户共享资源,因为服务器硬件仅在节点计划用于使用时才会被分配。要为节点启用新的分配功能,请在节点的 driver_info 中设置标志 dynamic_allocation=True。有关更多信息,请参阅 https://docs.openstack.org/developer/ironic/drivers/oneview.html

  • 在节点资源中添加了一个 resource_class 字段,Nova 将使用该字段来定义哪些节点可以定量匹配 Nova flavor。操作员应在部署 Ocata 版本的 Nova 之前相应地填充此字段。

  • local_link_connectionpxe_enabled 属性暴露给 Port 资源,并将 API 最大版本提升到 1.19。

    • pxe_enabled 字段指示是否应在 PXE 启动此节点时使用此 Port。

    • local_link_connection 字段可用于提供端口绑定配置文件。

  • 一个新的字典字段 internal_info 被添加到端口 API 对象中。从 API 侧来看它是只读的,并且可以包含 ironic 需要为端口存储的任何内部信息。 cleaning_vif_port_id 正在存储在这个字典中。

  • 添加了对基于 socat 的串口控制台对基于 ipmitool 的驱动程序的支持。这些可以通过使用 agent_ipmitool_socatpxe_ipmitool_socat 驱动程序来获得。

  • 添加了从 IPA ramdisk 收集部署日志的支持。添加了五个新的配置选项

    • [agent]/deploy_logs_collect

    • [agent]/deploy_logs_storage_backend

    • [agent]/deploy_logs_local_path

    • [agent]/deploy_logs_swift_container

    • [agent]/deploy_logs_swift_days_to_expire.

  • 如果启用了 [metrics][metrics_statsd] 配置部分,ironic 现在会向 statsd 发出所有 API 方法的计时指标。

  • 现在可以通过调整策略设置来控制对每个 API 资源的 RESTful 访问。默认值在代码中设置,并与先前包含的 policy.json 文件保持向后兼容。默认情况下会检查两个新的角色,“baremetal_admin”和“baremetal_observer”,尽管这些可以通过配置替换或覆盖。 “baremetal_observer”角色授予对 Ironic API 的只读访问权限。

  • 用于部署 ramdisk 查找的新 API 端点 /v1/lookup。此端点未进行身份验证,允许 ramdisk 在无需传递凭据的情况下访问它。

  • 用于部署 ramdisk 心跳的新 API 端点 /v1/heartbeat/<NODE>。此端点未进行身份验证,允许 ramdisk 在无需传递凭据的情况下访问它。

  • 添加了多租户网络支持。

    ironic 现在具有节点的“网络接口”概念,它代表一个网络驱动程序。

    有三种网络接口可用

    • flat:这复制了旧的 flat 网络行为,并且在使用 neutron 进行 DHCP 时是默认设置。

    • noop:这复制了在不使用 neutron 进行 DHCP 时的旧的 flat 行为,并且当配置选项 [DHCP]/dhcp_provider 设置为“none”时是默认设置。

    • neutron:这允许将配置网络和清理网络与租户网络分离,并提供租户网络到租户网络的隔离,以及租户网络到控制平面的隔离。如果启用了 neutron 接口,则必须设置以下配置选项,否则 ironic-conductor 将无法启动

      • [neutron]/provisioning_network_uuid

      • [neutron]/cleaning_network_uuid

    一个 [DEFAULT]/enabled_network_interfaces 选项(必须为 ironic-api 和 ironic-conductor 服务设置)控制哪些网络接口可供使用。

    通过设置通过 REST API 访问的节点的 network_interface 字段来设置节点的网络接口。此字段在 API 版本 1.20 及更高版本中可用。仅在 enrollinspectingmanageable 状态下才能更改网络接口。

    配置选项 [DEFAULT]/default_network_interface 可用于指定在创建节点时定义的网络接口。

    警告:在升级到此版本之前,请不要设置选项 ``[DEFAULT]/default_network_interface``,而应阅读有关它的升级说明,因为数据迁移取决于该值。

  • 添加了 ironic conductor 在查找时传递代理指标配置的能力。与足够新的 ironic python 代理配合使用时,这将配置指标后端。

  • 扩展了根设备提示,以识别磁盘是旋转磁盘还是非旋转磁盘。

  • 添加了对 iLO 驱动程序中验证 iLO SSL 证书的支持。添加了一个新的配置选项 [ilo]/ca_file 来指定 iLO CA 证书文件。如果指定了 [ilo]/ca_file,iLO 驱动程序将验证 iLO SSL 证书。

升级说明

  • 在节点资源中添加了一个 resource_class 字段,Nova 将使用该字段来定义哪些节点可以定量匹配 Nova flavor。操作员应在部署 Ocata 版本的 Nova 之前相应地填充此字段。

  • 默认情况下启用部署失败时收集日志,并且日志将保存到配置选项 [agent]/deploy_logs_local_path 指定的本地磁盘位置(默认情况下为 /var/log/ironic/deploy)。升级的运营商可能希望禁用此功能,为日志启用某种轮换或更改配置以将日志存储在 Swift 中,以避免磁盘空间问题。

  • 在升级期间,建议所有部署者重新评估其 /etc/ironic/policy.json 文件中的设置。此文件现在仅用于覆盖默认配置,例如通过将对 ironic 服务的访问限制为特定租户或限制对特定 API 端点的访问。提供了一个 policy.json.sample 文件,其中列出了所有受支持的策略。

  • 更改了配置其他 OpenStack 服务客户端访问凭据的方式。对于每个服务,都应在配置节中指定 Keystone 会话选项(超时、SSL 相关选项)和 Keystone auth_plugin 选项(auth_url、auth_type 和相应的 auth_plugin 选项)。受影响的配置节是

    • [neutron] 用于 Neutron 服务用户

    • [glance] 用于 Glance 服务用户

    • [swift] 用于 Swift 服务用户

    • [inspector] 用于 Ironic Inspector 服务用户

    • [service_catalog] *新的节* 用于 Ironic 服务用户,用于从 Keystone Catalog 发现 Ironic 端点

    这使得可以对每个服务的身份验证进行微调。

    使用 [keystone_authtoken] 配置节中的值提供向后兼容的选项处理,但建议运营商切换到新的配置选项,因为旧选项已被弃用。旧选项将在 Ocata 周期中删除。有关会话、身份验证插件及其设置的更多信息,请参阅 https://docs.openstack.org/developer/keystoneauth/

  • 选项 [neutron]/url 的默认值的语义发生了小变化

    • 默认值已更改为 None。

    • 对于 [neutron]/auth_strategynoauth 的情况,默认值意味着使用 http://$my_ip:9696

    • 对于 [neutron]/auth_strategykeystone 的情况,默认值意味着从 Keystone Catalog 解析端点。

  • 新的配置节 [service_catalog] 用于访问用于从 Keystone Catalog 发现 Ironic API URL 的凭据。以前使用 [keystone_authtoken] 节,现在已弃用此目的。

  • 添加了一个新的配置选项 [api]/restrict_lookup,它限制了查找 API(通常仅由 ramdisk 使用)仅在 ramdisk 使用的特定节点状态下工作,并且默认值为 True。需要此端点在任何状态下工作的运营商可以将此设置为 False,但这是不安全的,不应在正常操作中使用。

  • [DEFAULT]/default_network_interface 配置选项已引入,默认值为一个空值。如果设置,则指定的接口将用作没有设置 network_interface 字段的节点的网络接口。如果未设置,则通过查看 [dhcp]/dhcp_provider 值来确定网络接口。如果它是 neutron - flat 网络接口是默认值,否则是 noop

    将为已经设置了 network_interface 的所有节点通过数据库迁移设置网络接口。这将遵循上述逻辑。在现有部署的数据库迁移期间,重要的是检查上述配置选项,以确保现有节点将具有预期的 network_interface。如果未设置 [DEFAULT]/default_network_interface,则一切都应该按预期进行。如果已设置,请确保将其设置为希望现有节点使用的值。

  • 请注意,如果配置选项 [DEFAULT]/default_network_interface 已设置,则必须在 API 和 conductor 主机上的配置文件中设置它。

  • 如果配置选项 [DEFAULT]/enabled_network_interfaces 中指定了 neutron 网络接口,则需要配置选项 [neutron]/provisioning_network_uuid[neutron]/cleaning_network_uuid。如果未指定其中任何一个,ironic-conductor 服务将无法启动。

弃用说明

  • 由于它需要在启动时间之前将资源分配给 Ironic,从而使服务器硬件对非 OpenStack OneView 用户不可用,因此 OneView 驱动程序的预分配功能已被弃用。预分配将在 OpenStack Pike 版本中删除。所有将 dynamic_allocation=False 设置的节点,或未设置 dynamic_allocation 标志的节点,都假定为预分配。用户可以使用 REST API 或 ironic-oneview-cli 将节点从预分配迁移到动态分配。有关更多信息,请参见 https://docs.openstack.org/developer/ironic/drivers/oneview.html

  • 代理供应商直通已被弃用,将在 Ocata 版本中删除。运营商应将其 IPA 镜像更新到 Newton 版本,以使用新的替换 API。驱动程序开发人员应停止使用代理供应商直通。

  • 配置选项 [ilo]/clean_priority_erase_devices 已被弃用,将在 Ocata 周期中删除。请改用选项 [deploy]/erase_devices_priority

  • 配置节 [keystone_authtoken] 已被弃用,用于配置其他服务的客户端(但仍用于配置 API 令牌身份验证),以支持节 [service_catalog]。在 Ocata 周期中将删除通过节 [keystone_authtoken] 配置其他服务的客户端的能力。

  • 配置选项 [agent]/heartbeat_timeout 已重命名为 [api]/ramdisk_heartbeat_timeout。旧版本已被弃用。

  • DHCP 提供程序中的 create_cleaning_portsdelete_cleaning_ports 方法已被弃用,将在 Ocata 版本中完全删除。他们正在实施的逻辑应移动到自定义网络接口的 add_cleaning_networkremove_cleaning_network 方法。之后,应从 DHCP 提供程序中删除这些方法,以便使用自定义网络接口。 flat 网络接口现在不需要 [neutron]/cleaning_network_uuid 以便在升级时不破坏独立部署,但如果启用了 flat 网络接口,则将在 Ocata 版本中需要它。

  • 将周期性任务放在驱动程序对象(而不是接口)上已被弃用。驱动程序开发人员应将周期性任务从驱动程序对象移动到接口对象。

安全问题

  • 以前,访问 Ironic 的 REST API 是“全有或全无”的。在此版本中,现在可以限制对 API 资源的读写访问权限到特定的云角色。

错误修复

  • 更新了采用逻辑,以防止在适当的情况下基于驱动程序创建 ramdisk 并默认创建实例。

  • 更新了采用文档,指出用户应该定义采用功能所使用的 boot_option。

  • 更新了采用文档,指出用户可能希望使用 API 版本 1.20 引入的 noop 网络接口。

  • 修复了在基于 vmedia 的驱动程序进行清理操作期间未附加虚拟媒体的问题。

  • 现在,使用 agent_iloiscsi_ilo 驱动程序的节点在其 driver_info/ilo_deploy_iso 字段在节点验证期间得到验证。

  • 清除 conductor 启动时被 conductor 锁定的节点的 target_power_state。

  • 修复了一个错误,即 ironic python 代理 ramdisk 没有因为将临时分区大小传递给代理不正确而创建临时分区。

  • 不要依赖 keystonemiddleware 配置选项来实例化其他 OpenStack 服务的客户端。这允许更改 keystonemiddleware 选项以从旧选项更改为支持 Keystone V3 进行令牌验证。

其他说明

  • BaseAgentVendor 中的 continue_deployreboot_to_instance 方法停止接受 ** 参数。无论如何,它们从未被使用过;驱动程序应该停止传递任何内容。

6.0.0

序言

从本版本开始,IPA 是 Ironic 支持的唯一部署和检查 ramdisk。

新特性

  • 添加了 adopt 供应状态目标动词,允许操作员将节点从 manageable 状态移动到 active 状态,而无需对节点执行部署操作。这可用于表示先前通过其他方式部署,现在将由 ironic 管理,并随后发布到可用硬件池的节点。

  • 添加了一个新的配置选项 [deploy]continue_if_disk_secure_erase_fails,默认值为 False。如果设置为 True,Ironic Python Agent 将在 ATA 安全擦除操作失败时恢复到磁盘粉碎操作。在正常情况下,ATA 安全擦除操作失败会导致节点进入 clean failed 状态。

  • IPA 已经支持 iSCSI portal port 自定义。通过此补丁,我们向 agent_client.start_iscsi_target() 方法添加了新的 portal_port 参数,以将 iSCSI portal port 传递到 IPA 侧。并在 iscsi 模块中添加新的配置 CONF.iscsi.portal_port

  • 操作员现在可以设置 deploy.power_off_after_deploy_failure,以便在部署失败时让节点保持开机状态。这对于排查部署问题很有用。需要注意的是,Nova 仍然会尝试在部署失败后删除节点,因此在非独立部署中,deploy.power_off_after_deploy_failure 可能不太有效,直到 ironic 在 nova 中的驱动程序中提出类似的补丁为止。

  • 这添加了用于带内清理的 reboot_requested 选项。如果设置为 true,Ironic 将在完成该步骤后并在继续下一步之前重新启动节点。当某些操作(例如 BIOS 升级或设置更改)需要重新启动才能生效时,此选项很有用。

  • 现在可以配置通知使用与 RPC 不同的传输 URL。这些可能完全是不同的消息代理主机(尽管它们不必如此)。如果未提供特定于通知的配置,则通知程序将使用与 RPC 相同的传输。

  • 添加了对 RAID 配置中 JBOD 卷的支持。

  • 现在提供了一个新的配置选项 shred_final_overwrite_with_zeros。此选项控制对清理期间节点上的所有块设备执行的最终用零覆盖操作。此功能先前始终启用且不可配置。仅当无法对块设备进行 ATA 安全擦除时,才使用此选项。

  • 添加了节点供应商 passthru 方法使用共享锁的能力。节点供应商 passthru 方法始终获取独占锁的默认行为未更改。

升级说明

  • 添加了一个新的配置选项 [deploy]continue_if_disk_secure_erase_fails,默认值为 False。默认设置代表了 Ironic Python Agent 在清理失败期间的标准行为。

  • 修复了 Mitaka ironic python agent ramdisk iSCSI 部署与 ironic 新版本兼容性的问题,方法是在暴露根磁盘元数据到 iSCSI 之前记录警告并重试部署,如果擦除根磁盘元数据失败。如果请求了自定义 iSCSI 端口,则会记录一个澄清问题的错误,并要求操作员使用默认 iSCSI portal 端口,或将 ironic python agent ramdisk 升级到版本 >= 1.3 (Newton)。

  • 删除了 iPXE 脚本 (boot.ipxe) 中的“hexraw”类型支持,因为旧版本的 iPXE 不支持“hexraw”。“hexhyp”已取代“hexraw”,并自 kilo 版本以来一直使用。

  • 删除了对旧 ramdisk(“deploy-ironic” diskimage-builder 元素)的支持。请在升级之前切换到 IPA。

  • 删除了 API 中允许在清理期间删除“instance_uuid”的解决方法。这仅在 Nova 引入清理期间需要。

  • [agent] 配置组中,以下选项在 Liberty 周期中已被弃用,并且已被删除

    • [agent]/agent_pxe_append_params

    • [agent]/agent_pxe_config_template

  • 删除弃用的“[conductor]/clean_nodes”选项。配置文件应使用“[conductor]/automated_clean”选项。

  • [agent] 配置部分,Liberty 周期中弃用了两个配置选项,并且已被删除。这些选项是

    • [agent]/agent_erase_devices_priority

    • [agent]/agent_erase_devices_iterations

  • 删除了对检查选项的“discoverd”组的支持。配置文件应使用“inspector”组。

  • 删除了弃用的“driver_periodic_task”装饰器。驱动程序应使用 futurist 库中的“periodics.periodic”装饰器。

  • 删除了“IronicException”类中的“message”属性的支持。 “IronicException”的子类应使用“_msg_fmt”属性。此更改仅与开发人员相关。

  • 删除了弃用的“[agent]/manage_tftp”选项。配置文件应使用“[agent]/manage_agent_boot”选项。

  • 删除了弃用的“periodic_interval”选项。

  • 删除了弃用的“[pxe]/http_url”和“[pxe]/http_root”选项。配置文件应使用“[deploy]/http_url”和“[deploy]/http_root”。

  • 删除了“verbose”配置选项,因此所有命令行中的“--verbose, -v”参数也被删除。这会影响 ironic-api、ironic-conductor、ironic-dbsync 和 ironic-rootwrap 命令。verbose 配置/参数最初是设置日志级别为 INFO 的快捷方式,但是自从该选项被弃用以来,日志级别默认为 INFO,因此该选项实际上是无操作的。

弃用说明

  • “[deploy]/erase_devices_iterations”配置已弃用,将在 Ocata 周期中删除。它已被“[deploy]/shred_random_overwrite_iterations”配置取代。此配置选项控制用随机数据覆盖块设备的次数。仅当无法对块设备进行 ATA 安全擦除时,才使用此选项。

安全问题

  • 此版本修复了一个关键的安全漏洞 (CVE-2016-4985)。 之前,如果客户端能够知道(或猜测)属于该节点的网卡的 MAC 地址,则可以通过向 /v1/drivers/$DRIVER_NAME/vendor_passthru 资源发送精心构造的 POST 请求来绕过 Keystone 身份验证并检索注册到 Ironic 的任何节点的所有信息。Ironic 的 policy.json 配置现在在响应此请求时受到尊重,因此,如果其他请求的密码应该被屏蔽,它们也会被屏蔽。

错误修复

  • 修复了一个 ironic 不会在硬件检查期间记录 request-id 的错误。

  • 修复了一个导致 IPMI 驱动程序中的 bmc_reset() 供应商 passthru 方法始终以“warm”方式执行的问题。

  • 修复了 iscsi_ilo 驱动程序中不支持 RAID 接口的问题。

  • 已更正一个错误,该错误导致节点在从 CLEANWAIT 状态超时时未清除其当前 clean_step。 之前,此错误会阻止用户重试清理操作。有关更多信息,请参阅 https://bugs.launchpad.net/ironic/+bug/1590146

  • 更正了 node.name 的 api 版本检查条件,以解决使用低于 1.5 版本的 API 时,我们可以将节点名称设置为 '' 的问题,那时引入了节点名称。

  • 修复了一个导致 conductor 在 enabled_drivers 配置选项中存在重复条目时启动时出错的问题。

  • 删除了在补丁请求中指定多个 add/replace 操作时设置不正确节点名称的可能性。从这个版本开始,补丁中指定的所有 name 值都会被检查,以符合 JSON PATCH RFC https://tools.ietf.org/html/rfc6902

  • 修复了 iscsi_deploy.get_deploy_info 中“port”的默认值设置为 [iscsi]/portal_port 选项值,而不是硬编码为“3260”的问题。

  • 修复了一个 iLO 驱动程序在 swift 文件路径包含 swift 伪文件夹时从 swift 下载固件文件失败的问题。

  • 修复了 iRMC 带外检查的 InvalidMAC 异常。

  • 修复了一个 VirtualBox 问题,即 Ironic 无法在 VirtualBox VM 开机时设置 VirtualBox VM 的启动设备。此错误导致两个问题 1. VirtualBox 无法在本地启动模式下部署 VM。 2. Ironic 在 VirtualBox VM 开机时无法设置启动设备,并且在 VirtualBox VM 开机时也无法从 Ironic API 调用中获取正确的启动设备。

  • 在 iLO 驱动程序中发现了一个错误,即未处于 active 状态但参与 conductor 接管的节点可能会被关机。为了准备新的功能和特性,可能会遇到此错误,我们将部署准备步骤限制为 deploying 状态,以防止节点被错误地关机。

  • 修复了 ‘ironic.nova.compute.ClusteredComputeManager’ 在 Nova 实例终止期间为所有 Nova hypervisor 更新资源时的性能问题。

  • 修复了一个允许节点使用由于 Ironic API 的工作方式而隐式不允许的一些保留字命名的问题。保留字是“maintenance”、“management”、“ports”、“states”、“vendor_passthru”、“validate”和“detail”。

  • 某些节点的控制台可能已启用,但在启动 conductor 时相应的控制台服务已停止,这尝试在 conductor 启动时启动控制台,以使状态保持一致。

  • 修复了一个导致 grub 安装失败的错误。如果磁盘已经带有分区表,则 conductor 无法正确擦除它,并且新的分区表将与旧的分区表冲突。此问题仅影响新节点和禁用 automated_clean 的安装。现在,在新的部署之前,将清除没有 preserve_ephemeral 的磁盘实例。请参阅 https://bugs.launchpad.net/ironic-lib/+bug/1550604

其他说明

  • 当节点注册到 ironic 时,在过渡到 manageable 状态时,会记录节点当前的电源状态。一旦节点被采用并处于 active 状态,除非操作员在 ironic 中更改电源状态,否则 ironic 将强制执行记录的电源状态。这是 ironic 在采用功能之前的默认行为。

  • 采用 oslo-config-generator 生成示例配置文件。Ironic 代码中的新配置选项应在 ironic/conf/opts.py 中注册。新的外部库应在 tools/config/ironic-config-generator.conf 中注册。弃用的选项应添加一个弃用的组,即使它没有更改其组,否则弃用的组将默认使用“DEFAULT”。

  • 默认情况下,不要显示来自 keystoneauth 和 keystonemiddleware 的 DEBUG 日志记录。

  • 使用适当的日志记录器名称记录 eventlet.wsgi.server 事件,并默认忽略 DEBUG 日志记录。

  • 添加 Neutron port_setup_delay 配置选项。此延迟允许 Ironic 等待 Neutron 端口操作,直到我们有一种与 Neutron 同步事件的机制。默认设置为 0。