IPMI 驱动¶
概述¶
`ipmi` 硬件类型通过使用 IPMI(智能平台管理接口)协议版本 2.0 或 1.5 来管理节点。它使用 IPMItool 工具,这是一个用于控制支持 IPMI 的设备的开源命令行界面 (CLI)。
词汇表¶
启用 IPMI 硬件类型¶
请参阅 配置 IPMI 支持 以获取所需的依赖项。
从 Ocata 版本开始,`
ipmi` 硬件类型默认启用。要显式启用它,请将以下内容添加到您的 `ironic.conf` 文件中[DEFAULT] enabled_hardware_types = ipmi enabled_management_interfaces = ipmitool,noop enabled_power_interfaces = ipmitool
[DEFAULT] enabled_hardware_types = ipmi enabled_console_interfaces = ipmitool-socat,ipmitool-shellinabox,no-console enabled_management_interfaces = ipmitool,noop enabled_power_interfaces = ipmitool enabled_vendor_interfaces = ipmitool,no-vendor
重新启动 Ironic conductor 服务。
请参阅 启用驱动程序和硬件类型 以获取更多详细信息。
使用 IPMI 驱动程序注册节点¶
配置为使用 IPMItool 驱动程序的节点应将 `driver` 字段设置为 `ipmi`。
以下配置值是必需的,必须添加到节点的 `driver_info` 字段中
`
ipmi_address`:BMC 的 IP 地址或主机名。
其他选项可能需要匹配 BMC 的配置,以下选项是可选的,但在大多数情况下,建议设置它们
`
ipmi_username`:访问 BMC 的用户名;默认为 *NULL* 用户。`
ipmi_password`:访问 BMC 的密码;默认为 *NULL*。`
ipmi_port`:远程 IPMI RMCP 端口。默认情况下,ipmitool 将使用端口 *623*。
注意
强烈建议您为 BMC 设置用户名和密码。
可以使用 `baremetal node create` 命令注册使用 IPMItool-based 驱动程序的节点。例如
baremetal node create --driver ipmi \
--driver-info ipmi_address=<address> \
--driver-info ipmi_username=<username> \
--driver-info ipmi_password=<password>
更改默认 IPMI 凭据持久性方法¶
`
store_cred_in_env`:ipmi.store_cred_in_env。
配置选项 `store_cred_in_env` 允许用户在基于文件和环境变量的持久性方法之间切换,用于 IPMI 密码。
对于临时文件选项,长时间的 IPMI 会话(例如用于控制台支持的会话)会在 conductor 磁盘上留下包含凭据的文件,持续整个会话。
要切换到环境变量持久性,请将 `store_cred_in_env` 参数在配置文件中设置为 `True`
[ipmi]
store_cred_in_env = True
高级配置¶
当仅提供 `address`、`username` 和 `password` 等简单配置不足时,IPMItool 驱动程序包含许多其他选项,可用于解决特殊用途。
单/双桥接功能¶
注意
要使用桥接功能,需要 IPMItool 的版本高于或等于 1.8.12。
IPMItool-based 驱动程序支持两种不同的桥接功能:*单*桥接和*双*桥接。
需要将以下配置值添加到节点的 `driver_info` 字段中,以便可以使用桥接
`
ipmi_bridging`:桥接类型;默认值为 *no*;其他支持的值为 *single* 表示单桥接或 *dual* 表示双桥接。- `
ipmi_local_address`:桥接请求的本地 IPMB 地址。 仅当 `
ipmi_bridging` 设置为 *single* 或 *dual* 时才需要。此配置是可选的,如果未指定,IPMItool 将自动发现它。
- `
`
ipmi_target_address`:桥接请求的目标地址。仅当 `ipmi_bridging` 设置为 *single* 或 *dual* 时才需要。`
ipmi_target_channel`:桥接请求的目标通道。仅当 `ipmi_bridging` 设置为 *single* 或 *dual* 时才需要。
双桥接特定选项
`
ipmi_transit_address`:桥接请求的传输地址。仅当 `ipmi_bridging` 设置为 *dual* 时才需要。`
ipmi_transit_channel`:桥接请求的传输通道。仅当 `ipmi_bridging` 设置为 *dual* 时才需要。
参数 `ipmi_bridging` 应指定所需的桥接类型:*single* 或 *dual* 以访问裸机节点。如果未指定该参数,则默认值将设置为 *no*。
可以使用 `baremetal node set` 命令将所需的桥接信息设置为使用 IPMItool 驱动程序注册的 Ironic 节点。例如
单桥接
baremetal node set <UUID or name> \ --driver-info ipmi_local_address=<address> \ --driver-info ipmi_bridging=single \ --driver-info ipmi_target_channel=<channel> \ --driver-info ipmi_target_address=<target address>
双桥接
baremetal node set <UUID or name> \ --driver-info ipmi_local_address=<address> \ --driver-info ipmi_bridging=dual \ --driver-info ipmi_transit_channel=<transit channel> \ --driver-info ipmi_transit_address=<transit address> \ --driver-info ipmi_target_channel=<target channel> \ --driver-info ipmi_target_address=<target address>
更改 IPMI 协议版本¶
IPMItool-based 驱动程序使用 IPMI 协议的 *2.0* 和 *1.5* 版本。默认情况下,使用版本 *2.0*。
为了在裸机节点中更改 IPMI 协议版本,需要将以下选项设置为节点的 `driver_info` 字段
`
ipmi_protocol_version`:IPMI 协议的版本;默认值为 *2.0*。支持的值为 *1.5* 或 *2.0*。
可以使用 `baremetal node set` 命令设置所需的协议版本
baremetal node set <UUID or name> --driver-info ipmi_protocol_version=<version>
警告
IPMI 协议版本 *1.5* 不支持加密。因此,强烈建议使用版本 2.0。
密码套件¶
IPMI 2.0 引入了对加密的支持,并允许设置要使用的密码套件。传统上,`ipmitool` 默认使用密码套件 3,但由于 SHA1 不再符合现代安全要求,近期的版本(例如 RHEL 8.2 中使用的版本)正在切换到套件 17。
通常,与 BMC 的密码套件使用特殊命令进行协商。在某些硬件上,协商产生不正确的结果,IPMI 命令失败,并显示
Error in open session response message : no matching cipher suite
Error: Unable to establish IPMI v2 / RMCP+ session
另一个可能的问题是 `ipmitool` 命令花费很长时间(几秒钟甚至几分钟),因为 BMC 不支持密码套件协商。在两种情况下,您可以自己指定所需的套件,例如
baremetal node set <UUID or name> --driver-info ipmi_cipher_suite=3
在无法为每个节点指定 `ipmi_cipher_suite` 的情况下,配置参数 `[ipmi]/cipher_suite_versions` 可以设置为密码套件列表,Ironic 将尝试从提供的列表中找到可用的值(从后到前)
[ipmi]
cipher_suite_versions = 1,2,3,6,7,8,11,12
要找到此配置的合适值,您可以在运行 `ipmitool` 命令后检查字段 `RMCP+ Cipher Suites`,例如
$ ipmitool -I lanplus -H $HOST -U $USER -v -R 12 -N 5 lan print
# output
Set in Progress : Set Complete
Auth Type Support : NONE MD2 MD5 PASSWORD OEM
Auth Type Enable : Callback : NONE MD2 MD5 PASSWORD OEM
IP Address Source : Static Address
IP Address : <IP>
Subnet Mask : <Subnet>
MAC Address : <MAC>
RMCP+ Cipher Suites : 0,1,2,3,6,7,8,11,12
警告
仅密码套件 3 和 17 被现代标准认为是安全的。密码套件 0 意味着“完全没有安全”。
使用不同的权限级别¶
默认情况下,Ironic 请求所有命令的 `ADMINISTRATOR` 权限级别。这是最简单的选项,但如果不可用,您可以将其更改为 `CALLBACK`、`OPERATOR` 或 `USER` 如下所示
baremetal node set <UUID or name> --driver-info ipmi_priv_level=OPERATOR
您必须确保用户仍然可以更改电源状态和启动设备。
静态启动顺序配置¶
请参阅 静态启动顺序配置。
厂商差异¶
虽然智能平台管理接口 (IPMI) 接口基于定义的标准,但 Ironic 社区意识到至少有一个厂商使用非标准的启动设备选择器。本质上,这可能就像对标准的简单解释不同。
截至 2020 年 10 月,已知差异在于 Supermicro 硬件,其中表示标准中 *REMOTE* 启动设备的 `0x24` 选择器必须在 **UEFI 模式**下使用时用于从本地磁盘子系统请求启动操作。这与 BMC 期望相同选择器值为 `0x08` 的 BIOS 模式相反。
由于 BMC 不会以任何错误形式响应,而且我们不希望通过在每次操作之前显式查询所有 BMC 可能是哪个厂商来冒 BMC 连接问题的风险,因此可以自动将厂商记录在 `properties` 字段 `vendor` 中。当将其设置为值 `supermicro` 时,Ironic 将导航 UEFI 行为差异,从而启用 UEFI 请求磁盘启动。
示例
baremetal node set <UUID or name> \
--properties vendor="supermicro"
幸运的是,Ironic 将尝试在电源同步过程中执行此检测,并在尚未设置时记录此值。
虽然在其他厂商的 BMC 中设置启动模式和目标启动设备时可能存在类似的问题,但我们目前尚不清楚。如果您遇到此类问题,请随时通过 Launchpad 报告,并确保包含来自 BMC 的 `chassis bootparam get 5` 输出值以及 `mc info` 输出。
示例
ipmitool -I lanplus -H <BMC ADDRESS> -U <Username> -P <Password> \
mc info
ipmitool -I lanplus -H <BMC ADDRESS> -U <Username> -P <Password> \
chassis bootparam get 5
send_raw clean/deploy 步骤¶
`send_raw` 厂商直通方法可用于作为清理或部署步骤,如果需要将原始字节传输到远程 BMC 以促进某种操作或特定状态,则可以调用它。在这种情况下,要设置的原始字节通过请求的清理或部署步骤中的 `raw_bytes` 参数传递。
示例
{
"interface": "vendor",
"step": "send_raw",
"args": {
"raw_bytes": "0x00 0x00 0x00 0x00"
}
}