启用驱动程序和硬件类型¶
介绍¶
Bare Metal 服务将实际的硬件管理委托给驱动程序。驱动程序,也称为硬件类型,由硬件接口组成:一组处理裸机配置中特定供应商功能的功能。 存在通用的硬件类型(例如 redfish 和 ipmi),以及特定供应商的类型(例如 ilo 和 irmc)。
注意
从 Rocky 版本开始,在 Bare Metal 服务的范围内,术语驱动程序、动态驱动程序和硬件类型具有相同的含义。
启用硬件类型¶
硬件类型在 ironic-conductor 服务的配置文件中通过设置 enabled_hardware_types 配置选项来启用,例如
[DEFAULT]
enabled_hardware_types = ipmi,redfish
由于驱动程序的动态特性,它们还需要配置启用的硬件接口。
注意
所有可用的硬件类型和接口都列在源代码树中的 setup.cfg 文件中。
启用硬件接口¶
存在几种类型的硬件接口
- bios
管理裸机节点的 BIOS 设置的配置。 此接口是特定于供应商的,可以通过
enabled_bios_interfaces选项启用[DEFAULT] enabled_hardware_types = <hardware_type_name> enabled_bios_interfaces = <bios_interface_name>
有关详细信息,请参阅 BIOS 配置。
- boot
管理在裸机节点上部署 ramdisk 和用户实例的启动。 请参阅 启动接口 以获取详细信息。
启动接口实现通常是特定于供应商的,可以通过
enabled_boot_interfaces选项启用[DEFAULT] enabled_hardware_types = ipmi,ilo enabled_boot_interfaces = pxe,ilo-virtual-media
名称中带有
pxe的启动接口需要 配置网络启动。 还有一些特定于硬件的启动接口 - 请参阅 Ironic 的驱动程序、硬件类型和硬件接口 以获取其所需的配置。- console
管理对裸机节点串行控制台的访问。 请参阅 配置控制台 以获取详细信息。
- deploy
定义映像如何传输到目标磁盘。 请参阅 部署接口 以了解支持的部署接口之间的区别。
可以按如下方式启用部署接口
[DEFAULT] enabled_hardware_types = ipmi,redfish enabled_deploy_interfaces = direct,ramdisk
注意
direct部署接口需要对象存储服务或 HTTP 服务- inspect
实现从节点获取硬件信息。 可以通过联系节点的 BMC(带外)或通过在节点上启动 ramdisk(带内)来实现。 后者实现称为
inspector,并使用一个单独的服务,称为 ironic-inspector。 例如[DEFAULT] enabled_hardware_types = ipmi,ilo,irmc enabled_inspect_interfaces = ilo,irmc,inspector
有关更多详细信息,请参阅 硬件检查。
- management
提供额外的硬件管理操作,例如获取或设置启动设备。 此接口通常是特定于供应商的,并且其名称通常与硬件类型的名称匹配(
ipmitool是一个值得注意的例外)。 例如[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_management_interfaces = ipmitool,redfish,ilo,irmc
使用
ipmitool需要 配置 IPMI 支持。 请参阅 Ironic 的驱动程序、硬件类型和硬件接口 以获取每个驱动程序所需的配置。- network
连接/断开裸机节点与虚拟网络的连接。 请参阅 配置租户网络 以获取更多详细信息。
- power
在节点上运行电源操作。 与管理接口类似,它通常是特定于供应商的,并且其名称通常与硬件类型的名称匹配(
ipmitool再次是一个例外)。 例如[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_power_interfaces = ipmitool,redfish,ilo,irmc
使用
ipmitool需要 配置 IPMI 支持。 请参阅 Ironic 的驱动程序、硬件类型和硬件接口 以获取每个驱动程序所需的配置。- raid
管理节点上 RAID 的构建和拆除。 与检查类似,它可以实现带外或带内(通过
agent实现)。 请参阅 RAID 配置 以获取详细信息。 例如[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_raid_interfaces = agent,no-raid
- storage
管理与远程存储子系统的交互,例如块存储服务,并有助于促进从远程卷启动。 此接口可确保在已部署实例的生命周期内更新卷目标和连接器信息。 请参阅 从卷启动 以获取更多详细信息。
此接口默认设置为
noop驱动程序,因为它被认为是一个“选择加入”接口,需要操作员进行额外的配置才能使用。例如
[DEFAULT] enabled_hardware_types = ipmi,irmc enabled_storage_interfaces = cinder,noop
- 供应商
是供应商扩展暴露在 API 中的位置。 请参阅 供应商方法 以获取详细信息。
[DEFAULT] enabled_hardware_types = ipmi,redfish,ilo,irmc enabled_vendor_interfaces = ipmitool,no-vendor
这是一个完整的配置示例,启用了两个通用协议 IPMI 和 Redfish,并具有一些其他功能
[DEFAULT]
enabled_hardware_types = ipmi,redfish
enabled_boot_interfaces = pxe
enabled_console_interfaces = ipmitool-socat,no-console
enabled_deploy_interfaces = direct
enabled_inspect_interfaces = inspector
enabled_management_interfaces = ipmitool,redfish
enabled_network_interfaces = flat,neutron
enabled_power_interfaces = ipmitool,redfish
enabled_raid_interfaces = agent
enabled_storage_interfaces = cinder,noop
enabled_vendor_interfaces = ipmitool,no-vendor
请注意,某些接口具有名称为 no-<TYPE> 的实现,其中 <TYPE> 是接口类型。 这些实现不执行任何操作,并在从 API 使用时返回错误。
多导体环境中的硬件接口¶
在启用硬件类型及其接口时,请确保对于每个启用的硬件类型,所有导体上的整个启用接口集都匹配。 但是,不同的导体可以启用不同的硬件类型。
例如,您可以有两个配置如下的导体
[DEFAULT]
enabled_hardware_types = ipmi
enabled_deploy_interfaces = direct
enabled_power_interfaces = ipmitool
enabled_management_interfaces = ipmitool
[DEFAULT]
enabled_hardware_types = redfish
enabled_deploy_interfaces = ansible
enabled_power_interfaces = redfish
enabled_management_interfaces = redfish
但是,您不能有两个配置如下的导体
[DEFAULT]
enabled_hardware_types = ipmi,redfish
enabled_deploy_interfaces = direct
enabled_power_interfaces = ipmitool,redfish
enabled_management_interfaces = ipmitool,redfish
[DEFAULT]
enabled_hardware_types = redfish
enabled_deploy_interfaces = ansible
enabled_power_interfaces = redfish
enabled_management_interfaces = redfish
这是因为 redfish 硬件类型将在这些导体上具有不同的启用 deploy 接口。 如果第二个导体具有 enabled_deploy_interfaces = direct 而不是 ansible,那将是可以的。
Bare Metal 服务不会检测到这种情况,但它可能导致 API 中不一致的行为,因为节点功能将取决于它被分配给哪个导体。
注意
我们不将其视为错误,因为这种临时不一致性在滚动升级或配置更新期间是不可避免的。
配置接口默认值¶
当操作员未为其中一个接口提供显式值(在创建节点或更新其驱动程序时),则默认值如 硬件接口默认值 中所述进行计算。 也可以通过设置以下选项之一来覆盖任何接口的默认值:default_<IFACE>_interface,其中 <IFACE> 是接口名称。 例如
[DEFAULT]
default_deploy_interface = direct
default_network_interface = neutron
此配置强制默认 deploy 接口为 direct,默认 network 接口为 neutron,适用于所有硬件类型。
默认值是在创建节点或更新其硬件类型时计算并设置的。 因此,更改这些配置选项对现有节点没有影响。
警告
在云中的所有导体上,必须以相同的方式配置默认接口实现,除了升级或配置更新期间的短时间。 否则,默认实现将取决于哪个导体处理哪个节点,并且这种映射是不可预测的甚至是不持久的。
警告
应谨慎使用这些选项。 如果硬件类型不支持提供的默认实现,其用户必须始终在创建节点时为该接口提供显式值。