升级到硬件类型

从 Rocky 版本开始,Bare Metal 服务不再支持经典驱动程序。如果您仍然使用经典驱动程序,请立即升级到硬件类型。请参阅 启用驱动程序和硬件类型,了解有关硬件类型硬件接口的详细信息。

规划升级

有必要弄清楚哪些硬件类型和硬件接口对应于部署中使用的哪些经典驱动程序。下表列出了经典驱动程序及其对应的硬件类型以及启动、部署、检查、管理和电源硬件接口

经典驱动程序

硬件类型

启动

部署

检查

管理

电源

agent_ilo

ilo

ilo-virtual-media

direct

ilo

ilo

ilo

agent_ipmitool

ipmi

pxe

direct

inspector

ipmitool

ipmitool

agent_ipmitool_socat

ipmi

pxe

direct

inspector

ipmitool

ipmitool

agent_irmc

irmc

irmc-virtual-media

direct

irmc

irmc

irmc

iscsi_ilo

ilo

ilo-virtual-media

iscsi

ilo

ilo

ilo

iscsi_irmc

irmc

irmc-virtual-media

iscsi

irmc

irmc

irmc

pxe_drac

idrac

pxe

iscsi

idrac

idrac

idrac

pxe_drac_inspector

idrac

pxe

iscsi

inspector

idrac

idrac

pxe_ilo

ilo

ilo-pxe

iscsi

ilo

ilo

ilo

pxe_ipmitool

ipmi

pxe

iscsi

inspector

ipmitool

ipmitool

pxe_ipmitool_socat

ipmi

pxe

iscsi

inspector

ipmitool

ipmitool

pxe_irmc

irmc

irmc-pxe

iscsi

irmc

irmc

irmc

pxe_snmp

snmp

pxe

iscsi

no-inspect

fake

snmp

注意

只有在配置中显式启用时,inspector inspect 接口才会被使用。否则,将使用 no-inspect

注意

pxe_ipmitool_socatagent_ipmitool_socat 使用 ipmitool-socat console 接口(ipmi 硬件类型的默认接口),而 pxe_ipmitoolagent_ipmitool 使用 ipmitool-shellinabox。有关详细信息,请参阅 控制台

对于树外驱动程序,您可能需要联系其维护者或通过研究源代码来确定适当的接口。

配置

您需要启用与当前启用的经典驱动程序对应的硬件类型和接口。例如,如果在您的 ironic.conf 中有以下配置

[DEFAULT]
enabled_drivers = pxe_ipmitool,agent_ipmitool

您还需要添加此配置

[DEFAULT]
enabled_hardware_types = ipmi
enabled_boot_interfaces = pxe
enabled_deploy_interfaces = iscsi,direct
enabled_management_interfaces = ipmitool
enabled_power_interfaces = ipmitool

注意

对于每种接口类型,都有一个选项 default_<INTERFACE>_interface,其中 <INTERFACE> 是接口类型名称。例如,可以通过设置使所有节点默认使用 direct 部署方法

[DEFAULT]
default_deploy_interface = direct

迁移节点

在配置中启用必需的项目后,必须更新每个节点的 driver 字段为新值。您可能还需要为某些或所有接口设置新值

export OS_BAREMETAL_API_VERSION=1.31

for uuid in $(baremetal node list --driver pxe_ipmitool -f value -c UUID); do
    baremetal node set <node> --driver ipmi --deploy-interface iscsi
done

for uuid in $(baremetal node list --driver agent_ipmitool -f value -c UUID); do
    baremetal node set <node> --driver ipmi --deploy-interface direct
done

有关设置硬件类型和接口的更多详细信息,请参阅 使用 Ironic 注册硬件

警告

不建议更改 active 节点的接口。如果绝对需要,则必须首先将节点置于维护模式

baremetal node maintenance set $UUID \
    --reason "Changing driver and/or hardware interfaces"
# do the update, validate its correctness
baremetal node maintenance unset $UUID

其他接口

必须小心迁移使用非默认接口的经典驱动程序。本章涵盖了一些最常用的接口。

Ironic Inspector

一些经典驱动程序,特别是 pxe_ipmitoolagent_ipmitoolpxe_drac_inspector,使用 ironic-inspector 作为其 inspect 接口。

相同的功能适用于所有硬件类型,但必须在 Bare Metal 服务配置文件中启用适当的 inspect 接口,例如

[DEFAULT]
enabled_inspect_interfaces = inspector,no-inspect

有关更多详细信息,请参阅 启用驱动程序和硬件类型

然后,您可以告诉您的节点使用此接口,例如

export OS_BAREMETAL_API_VERSION=1.31
for uuid in $(baremetal node list --driver ipmi -f value -c UUID); do
    baremetal node set <node> --inspect-interface inspector
done

注意

配置了 IPMI 硬件类型的节点,如果已启用,将自动使用 inspector 检查实现。对于大多数供应商驱动程序而言并非如此。

控制台

几个经典驱动程序,特别是 pxe_ipmitool_socatagent_ipmitool_socat,使用基于 socat 的串行控制台实现。

对于 ipmi 硬件类型,如果已在配置文件中启用,则默认使用它

[DEFAULT]
enabled_console_interfaces = ipmitool-socat,no-console

如果您想使用 shellinabox 实现,则也必须启用它

[DEFAULT]
enabled_console_interfaces = ipmitool-shellinabox,no-console

然后,您需要更新一些或所有节点以显式使用它。例如,要更新所有节点,请使用

export OS_BAREMETAL_API_VERSION=1.31
for uuid in $(baremetal node list --driver ipmi -f value -c UUID); do
    baremetal node set <node> --console-interface ipmitool-shellinabox
done

RAID

许多经典驱动程序,包括 pxe_ipmitoolagent_ipmitool,默认使用基于 IPA 的带内 RAID 实现。

对于硬件类型,默认情况下不使用它。要使用它,您需要在配置中首先启用它

[DEFAULT]
enabled_raid_interfaces = agent,no-raid

然后,您可以更新支持带内 RAID 的那些节点以使用 agent RAID 接口。例如,要更新所有节点,请使用

export OS_BAREMETAL_API_VERSION=1.31
for uuid in $(baremetal node list --driver ipmi -f value -c UUID); do
    baremetal node set <node> --raid-interface agent
done

注意

节点使用 agent RAID 接口的能力取决于 ramdisk(更具体地说,硬件管理器 用于其中),而不是驱动程序。

网络和存储

网络和存储接口一直是动态的,因此不需要在升级期间进行任何特殊处理。

供应商

经典驱动程序允许使用 VendorMixin 功能来组合和暴露来自不同供应商接口实现的多个节点或驱动程序供应商传递方法到一个驱动程序中。

使用硬件类型,这不再可能。

使用硬件类型,供应商接口只能从给定硬件类型支持的供应商接口列表中拥有一个活动的实现。

Ironic 不再拥有依赖于此 VendorMixin 功能支持的树内驱动程序(经典和硬件类型)。但是,如果您正在使用依赖于它的树外经典驱动程序,则需要执行以下操作才能使用来自不同供应商传递实现中的供应商传递方法

  1. 在创建用于替换经典驱动程序的新硬件类型时,指定经典驱动程序用于构建其 VendorMixin 的所有供应商接口实现作为受支持的供应商接口(定义硬件类型的 Python 类的 supported_vendor_interfaces 属性)。

  2. 确保在 ironic 配置文件中的 DEFAULT.enabled_vendor_interfaces 选项下启用所有必需的供应商接口。您还应考虑设置 DEFAULT.default_vendor_interface 选项以指定未显式设置的节点的供应商接口。

  3. 在调用特定的供应商传递方法之前,请确保节点的供应商接口设置为具有所需供应商传递方法的接口。例如,如果您想从 vendor_foo 供应商接口调用供应商传递方法 vendor_method_foo()

    # set the vendor interface to 'vendor_foo`
    baremetal node set <node> --vendor-interface vendor_foo
    
    # invoke the vendor passthru method
    baremetal node passthru call <node> vendor_method_foo