Ironic/Drivers/iLODrivers/Kilo
目录
iLO 驱动程序 (Kilo)
概述
iLO 驱动程序能够利用惠普 Proliant 服务器中 iLO 管理引擎的特性。iLO 驱动程序面向 HP Proliant Gen 8 系统及更高版本,这些系统具有 iLO 4 管理引擎。
目前有 3 个 iLO 驱动程序
iscsi_ilo 和 agent_ilo 驱动程序通过使用 iLO 虚拟媒体启动裸机节点,提供安全性增强的无 PXE 部署。这些驱动程序通过管理通道发送管理信息,并将其与用于部署的数据通道分开。iscsi_ilo 驱动程序从 Ironic conductor 节点部署,并且可以执行网络启动和本地启动。agent_ilo 驱动程序从裸机节点部署,并且始终执行本地启动。
pxe_ilo 驱动程序使用 PXE/iSCSI 进行部署(就像普通的 PXE 驱动程序一样),但支持从 nova 自动设置请求的启动模式。此驱动程序不需要 iLO Advanced 许可证。
先决条件
- proliantutils 是一个 Python 包,其中包含用于管理 HP Proliant 硬件的一组模块。在 Ironic conductor 节点上安装 proliantutils 模块。所需的最低版本是 2.1.3。推荐版本是 2.1.5
$ pip install "proliantutils>=2.1.5"
- ipmitool 命令必须存在于运行 ironic-conductor 的服务节点上。在大多数发行版中,这作为 ipmitool 包的一部分提供。源代码可在 http://ipmitool.sourceforge.net/ 上找到。
驱动程序
iscsi_ilo 驱动程序
概述
iscsi_ilo 驱动程序被引入作为 HP Proliant 服务器的 pxe_ipmitool 和 pxe_ipminative 驱动程序的替代方案。iscsi_ilo 使用 iLO 中的虚拟媒体功能启动裸机节点,而不是使用 PXE 或 iPXE。
目标用户
- 不想在其数据中心使用 PXE/TFTP 协议的用户。
- 如果您担心 PXE 驱动程序的安全问题,并希望拥有安全性增强的无 PXE 部署机制 - PXE 驱动程序以明文形式将管理信息传递到裸机节点。但是,如果 Swift 代理服务器具有 HTTPS 端点(有关更多信息,请参阅 启用 Swift 中的 HTTPS),则 iscsi_ilo 驱动程序通过 HTTPS 通过加密管理网络将管理信息来回传递。管理信息和启动镜像将通过加密的管理网络通过 iLO 虚拟媒体检索。
已测试平台
此驱动程序应适用于具有 iLO 4 的 HP Proliant Gen8 服务器及更高版本。
它已使用以下服务器进行了测试
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
特性
- 使用虚拟介质进行无 PXE 部署。
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- 支持从虚拟介质启动实例以及从磁盘本地启动。默认情况下是从虚拟介质启动。
- UEFI 启动
- UEFI 安全启动
- 如果 Swift 代理服务器具有 HTTPS 端点,则通过安全、加密的管理网络(虚拟媒体)传递管理信息。有关更多信息,请参阅 启用 Swift 中的 HTTPS。通过数据网络使用 iSCSI 进行配置,因此此驱动程序具有安全性增强的优势,同时具有相同的性能。它将管理信息与数据通道分开。
- 远程控制台(基于 IPMI)
- 硬件传感器
- 适用于资源受限的机器(内存较少)。
- 本地启动(BIOS 和 UEFI)
- 支持部署整个磁盘镜像。
- 支持带外硬件检查。
- 节点清理。
需求
- iLO 4 高级许可证需要安装在 iLO 上才能启用虚拟介质功能。
- Swift 对象存储服务 - iLO 驱动程序使用 Swift 存储临时 FAT 镜像以及启动 ISO 镜像。
- Glance 镜像服务,配置 Swift 作为其后端 - 使用 iscsi_ilo 驱动程序时,包含部署 ramdisk 的镜像将由 iLO 直接从 Swift 检索。
部署过程
- 管理员为 iscsi_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含部署 ramdisk 镜像的 Glance UUID。
- Ironic 收到请求,在裸机节点上部署 Glance 镜像。
- iscsi_ilo 驱动程序关闭裸机节点。
- 驱动程序生成部署 ramdisk 镜像的 swift-temp-url,并将其作为 Virtual Media CDROM 附加到 iLO。
- 驱动程序创建一个包含 ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift,其 swift-temp-url 作为 Virtual Media Floppy 附加到 iLO。
- 驱动程序将节点设置为从 CDROM 一次性启动。
- 驱动程序打开裸机节点。
- 包含 deploy 内核/ramdisk 的部署内核/ramdisk 在裸机节点上启动。ramdisk 通过 iSCSI 暴露本地磁盘,并请求 Ironic conductor 完成部署。
- 驱动程序在 Ironic conductor 上将 glance 镜像写入裸机节点的磁盘。
- 如果请求本地启动,Ironic conductor 会要求部署 ramdisk 安装启动加载程序。
- 如果是网络启动(默认),驱动程序将 Glance 部署镜像的启动内核/ramdisk 打包到 ISO 中,然后将其上传到 Swift。此 ISO 镜像将用于启动部署的实例。
- 驱动程序重新启动节点。
- 对于网络启动,在第一次和后续重新启动时,iscsi_ilo 驱动程序将 Swift 中的此启动 ISO 镜像作为 Virtual Media CDROM 附加,然后将 iLO 设置为从其启动。如果 boot_option 设置为 local,则实例将从磁盘启动。
配置和启用驱动程序
1. 从 diskimage-builder [3]_ 准备一个 ISO 部署 ramdisk 镜像。可以通过将 iso 元素添加到 ramdisk-image-create 命令来完成。此命令创建部署内核/ramdisk 以及包含部署内核和 ramdisk 的可启动 ISO 镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kernel、deploy-ramdisk.initramfs 和 deploy-ramdisk.iso 的文件
pip install "diskimage-builder" ramdisk-image-create -o deploy-ramdisk ubuntu deploy-ironic iso
2. 将此镜像上传到 Glance:
glance image-create --name deploy-ramdisk.iso --disk-format iso --container-format bare < deploy-ramdisk.iso
3. 使用 Swift 作为其后端配置 Glance 镜像服务。 请参阅此处 获取配置说明。
4. 为 Swift 中的 Glance 用户设置 temp-url 密钥。例如,如果您已将 Glance 配置为用户 glance-swift 和租户为 service,则运行以下命令:
swift --os-username=service:glance-swift post -m temp-url-key:mysecretkeyforglance
5. 填写 /etc/ironic/ironic.conf 的 [glance] 部分中所需的参数。通常需要填写以下详细信息:
[glance] swift_temp_url_key=mysecretkeyforglance swift_endpoint_url=http://10.10.1.10:8080 swift_api_version=v1 swift_account=AUTH_51ea2fb400c34c9eb005ca945c0dc9e1 swift_container=glance
可以通过运行以下命令检索这些详细信息
$ swift --os-username=service:glance-swift stat -v | grep -i url StorageURL: http://10.10.1.10:8080/v1/AUTH_51ea2fb400c34c9eb005ca945c0dc9e1 Meta Temp-Url-Key: mysecretkeyforglance
6. Swift 必须使用在 Ironic 中配置的相同管理员凭据进行访问。例如,如果 Ironic 在 /etc/ironic/ironic.conf 中配置了以下凭据:
[keystone_authtoken] admin_password = password admin_user = ironic admin_tenant_name = service auth_version = 2
那么,以下命令应该可以工作:
$ swift --os-username ironic --os-password password --os-tenant-name service --auth-version 2 stat
Account: AUTH_22af34365a104e4689c46400297f00cb
Containers: 2
Objects: 18
Bytes: 1728346241
Objects in policy "policy-0": 18
Bytes in policy "policy-0": 1728346241
Meta Temp-Url-Key: mysecretkeyforglance
X-Timestamp: 1409763763.84427
X-Trans-Id: tx51de96a28f27401eb2833-005433924b
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
7. 将 iscsi_ilo 添加到 /etc/ironic/ironic.conf 中的 enabled_drivers 列表中。例如::
enabled_drivers = fake,pxe_ssh,pxe_ipmitool,iscsi_ilo
8. 重新启动 Ironic conductor 服务。
$ service ironic-conductor restart
在 Ironic 中注册 Proliant 节点
配置为 iLO 驱动程序的节点应将 driver 属性设置为 iscsi_ilo。以下配置值也需要在 driver_info 中需要
- ilo_address:iLO 的 IP 地址或主机名。
- ilo_username:具有管理员权限的 iLO 用户名。
- ilo_password:上述 iLO 用户的密码。
- ilo_deploy_iso:部署 ramdisk ISO 镜像的 Glance UUID。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
启动模式
iscsi_ilo 驱动程序支持自动检测启动模式(传统 BIOS 或 UEFI)以及从 BIOS 设置为 UEFI 的启动模式。有关详细信息,请参阅下面的注释。
- 如果未提供启动模式设置,iscsi_ilo 驱动程序将保留部署实例上裸机节点的当前启动模式。
- 可以通过将 boot_mode:bios 或 boot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。然后 iscsi_ilo 驱动程序将以指定的启动模式部署和配置实例。
例如,要使 Proliant 裸机节点始终以 UEFI 模式启动,请运行以下命令:
ironic node-update <node-id> add properties/capabilities='boot_mode:uefi'
注意:
- 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则设置此属性。适用于 Gen8(仅 ProLiant DL580)和 Gen9 系统。
- iscsi_ilo 驱动程序自动将启动模式从 BIOS 设置为 UEFI,如果 nova boot 中请求的启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 Gen8(仅 ProLiant DL580)和 Gen9 服务器上预配置启动模式为 Legacy。
- 在 Kilo 中已启用 UEFI 启动模式的自动启动 ISO 创建。还支持手动创建 UEFI 启动模式的启动 ISO。对于后者,需要单独构建部署镜像的启动 ISO,并且 Glance 中的部署镜像的 boot_iso 属性应包含启动 ISO 的 Glance UUID。
disk-image-create ubuntu baremetal iso
- 可以通过使用 ComputeCapabilitesFilter 从 nova 请求特定的启动模式。例如,可以在 flavor 中如下设置:
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi" nova boot --flavor ironic-test-3 --image test-image instance-1
agent_ilo 驱动程序
概述
agent_ilo 驱动程序作为 HP ProLiant 服务器的 agent_ipmitool 和 agent_ipminative 驱动程序的替代方案推出。agent_ilo 驱动程序使用 HP ProLiant 裸机服务器中的虚拟介质功能来启动裸机节点上的 Ironic Python Agent (IPA),而不是使用 PXE。有关 IPA 的更多信息,请参阅 https://wiki.openstack.org/wiki/Ironic-python-agent。
目标用户
- 不想在其数据中心使用 PXE/TFTP 协议的用户。
已测试平台
此驱动程序应适用于具有 iLO 4 的 HP Proliant Gen8 服务器及更高版本。
它已使用以下服务器进行了测试
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
特性
- 使用 Ironic Python Agent 进行无 PXE 部署。
- 远程控制台
- 硬件传感器
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- UEFI 启动
- UEFI 安全启动
- IPA 在裸机节点上运行,并直接从 Swift 提取镜像。
- IPA 部署的实例始终从本地磁盘启动。
- 支持部署整个磁盘镜像。
- 将管理信息与数据通道隔离。
- 支持带外硬件检查。
- 节点清理。
需求
- iLO 4 Advanced 许可证 需要安装在 iLO 上才能启用虚拟媒体功能。
- Swift 对象存储服务 - iLO 驱动程序使用 Swift 存储临时 FAT 镜像以及启动 ISO 镜像。
- Glance 镜像服务,配置 Swift 作为其后端 - 使用 agent_ilo 驱动程序时,包含 agent 的镜像将由 iLO 直接从 Swift 检索。
部署过程
- 管理员为 agent_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含包含 agent 的 ISO 部署 agent 镜像的 Glance UUID。
- Ironic 收到请求,在裸机节点上部署 Glance 镜像。
- 驱动程序关闭裸机节点。
- 驱动程序生成部署 agent 镜像的 swift-temp-url,并将其作为 Virtual Media CDROM 附加到 iLO。
- 驱动程序创建一个包含 agent ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift,其 swift-temp-url 作为 Virtual Media Floppy 附加到 iLO。
- 驱动程序将节点设置为从 CDROM 一次性启动。
- 驱动程序打开裸机节点。
- 包含 agent 的部署内核/ramdisk 在裸机节点上启动。agent ramdisk 与 Ironic conductor 通信,直接从 Swift 下载镜像,并将镜像写入节点上选择的磁盘。
- 驱动程序将节点设置为永久从磁盘启动,然后重新启动节点。
配置和启用驱动程序
1. 使用 [5]_ 中的 iso-image-create 脚本准备包含 agent 的 ISO 部署 Ironic Python Agent 镜像。以下命令将在以下目录 UPLOAD 中创建一个名为 ipa-ramdisk.iso 的文件:
$ pip install "diskimage-builder" $ disk-image-create -o ipa-ramdisk fedora ironic-agent iso
2. 将 IPA ramdisk 镜像上传到 Glance:
glance image-create --name ipa-ramdisk.iso --disk-format iso --container-format bare < ipa-ramdisk.iso
3. 将 Glance 镜像服务配置为使用 Swift 作为其存储后端。请参阅 [4]_ 获取配置说明。4. 为 Swift 中的 Glance 用户设置 temp-url 密钥。例如,如果您已将 Glance 配置为用户 glance-swift 和租户为 service,则运行以下命令:
swift --os-username=service:glance-swift post -m temp-url-key:mysecretkeyforglance
5. 填写 /etc/ironic/ironic.conf 的 [glance] 部分中所需的参数。通常需要填写以下详细信息:
[glance] swift_temp_url_key=mysecretkeyforglance swift_endpoint_url=http://10.10.1.10:8080 swift_api_version=v1 swift_account=AUTH_51ea2fb400c34c9eb005ca945c0dc9e1 swift_container=glance
The details can be retrieved by running the below command:::
$ swift --os-username=service:glance-swift stat -v | grep -i url StorageURL: http://10.10.1.10:8080/v1/AUTH_51ea2fb400c34c9eb005ca945c0dc9e1 Meta Temp-Url-Key: mysecretkeyforglance
6. Swift 必须使用在 Ironic 中配置的相同管理员凭据进行访问。例如,如果 Ironic 在 /etc/ironic/ironic.conf 中配置了以下凭据:
[keystone_authtoken] admin_password = password admin_user = ironic admin_tenant_name = service auth_version = 2
那么,以下命令应该可以工作:
$ swift --os-username ironic --os-password password --os-tenant-name service --auth-version 2 stat
Account: AUTH_22af34365a104e4689c46400297f00cb
Containers: 2
Objects: 18
Bytes: 1728346241
Objects in policy "policy-0": 18
Bytes in policy "policy-0": 1728346241
Meta Temp-Url-Key: mysecretkeyforglance
X-Timestamp: 1409763763.84427
X-Trans-Id: tx51de96a28f27401eb2833-005433924b
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
7. 将 agent_ilo 添加到 /etc/ironic/ironic.conf 中的 enabled_drivers 列表中。例如::
enabled_drivers = fake,pxe_ssh,pxe_ipmitool,agent_ilo
8. 重新启动 Ironic conductor 服务:
$ service ironic-conductor restart
在 Ironic 中注册 Proliant 节点
配置为 iLO 驱动程序的节点应将 driver 属性设置为 agent_ilo。以下配置值也需要在 driver_info 中需要
- ilo_address:iLO 的 IP 地址或主机名。
- ilo_username:具有管理员权限的 iLO 用户名。
- ilo_password:上述 iLO 用户的密码。
- ilo_deploy_iso:包含 agent 的 deploy agent ISO 镜像的 Glance UUID。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
启动模式
agent_ilo 驱动程序支持自动检测启动模式(传统 BIOS 或 UEFI)以及从 BIOS 设置为 UEFI 的启动模式。有关详细信息,请参阅下面的注释。
- 如果未提供启动模式设置,agent_ilo 驱动程序将保留部署实例上的当前启动模式。
- 可以通过将 boot_mode:bios 或 boot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。然后 agent_ilo 驱动程序将部署并配置实例到适当的启动模式。
例如,要使 Proliant 裸机节点以 UEFI 模式启动,请运行以下命令:
ironic node-update <node-id> add properties/capabilities='boot_mode:uefi'
注意:
- 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则设置此属性。适用于 ProLiant DL580 Gen8 和 Gen9 系统。
- agent_ilo 驱动程序自动将启动模式从 BIOS 设置为 UEFI,如果 nova boot 中请求的启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 Gen8(仅 ProLiant DL580)和 Gen9 服务器上预配置启动模式为 Legacy。
- 可以通过使用 ComputeCapabilitesFilter 从 nova 请求特定的启动模式。例如,可以在 flavor 中如下设置:
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi" nova boot --flavor ironic-test-3 --image test-image instance-1
pxe_ilo 驱动程序
概述
pxe_ilo 驱动程序使用 PXE/iSCSI(就像 pxe_ipmitool 驱动程序一样)来部署镜像,并使用 iLO 来对裸机节点执行所有管理操作(而不是使用 IPMI)。
目标用户
- 希望在其环境中对部署使用 PXE/iSCSI 或 iLO 中没有高级许可证的用户。
- 不希望手动在裸机节点上配置启动模式和启动设备的用户。
- 希望使用 iLO 驱动程序增值功能(例如启动模式管理、带外节点清理和硬件内省)的用户。
已测试平台
此驱动程序应适用于具有 iLO 4 的 HP Proliant Gen8 服务器及更高版本。它已使用以下服务器进行测试
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
特性
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- 远程控制台
- 硬件传感器
- UEFI 启动
- 本地启动(BIOS 和 UEFI)
- 支持部署整个磁盘镜像。
- 支持带外硬件检查。
- 节点清理
需求
无。
配置和启用驱动程序
1. 从 diskimage-builder [3] 准备一个 ISO 部署 ramdisk 镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kernel 和 deploy-ramdisk.initramfs 的文件:
ramdisk-image-create -o deploy-ramdisk ubuntu deploy-ironic
2. 将此镜像上传到 Glance:
glance image-create --name deploy-ramdisk.kernel --disk-format aki --container-format aki < deploy-ramdisk.kernel glance image-create --name deploy-ramdisk.initramfs --disk-format ari --container-format ari < deploy-ramdisk.initramfs
7. 将 pxe_ilo 添加到 /etc/ironic/ironic.conf 中 enabled_drivers 列表。
enabled_drivers = fake,pxe_ssh,pxe_ipmitool,pxe_ilo
8. 重新启动 Ironic conductor 服务:
service ironic-conductor restart
在 Ironic 中注册 Proliant 节点
配置为 iLO 驱动程序的节点应将 driver 属性设置为 pxe_ilo。以下配置值也需要在 driver_info 中
- ilo_address:iLO 的 IP 地址或主机名。
- ilo_username:具有管理员权限的 iLO 用户名。
- ilo_password:上述 iLO 用户的密码。
- pxe_deploy_kernel:部署内核的 Glance UUID。
- pxe_deploy_ramdisk:部署 ramdisk 的 Glance UUID。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
启动模式
pxe_ilo 驱动程序支持自动检测启动模式(传统 BIOS 或 UEFI)以及从 BIOS 到 UEFI 的启动模式设置。有关详细信息,请参阅下面的注释。
- 如果未提供启动模式设置,pxe_ilo 驱动程序将保留部署实例上的当前启动模式。
- 可以通过将 boot_mode:bios 或 boot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。然后 pxe_ilo 驱动程序将以适当的启动模式部署和配置实例:
ironic node-update <NODE-ID> add properties/capabilities='boot_mode:uefi'
注意:
- 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则设置此属性。适用于 ProLiant DL580 Gen8 和 Gen9 系统。
- pxe_ilo 驱动程序会自动将启动模式从 BIOS 更改为 UEFI,如果 nova boot 中请求的启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 DL580 Gen8 和 Gen9 服务器上预配置启动模式为传统模式。
- 可以通过使用 ComputeCapabilitesFilter 从 nova 请求特定的启动模式。例如,可以在 flavor 中如下设置:
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi" nova boot --flavor ironic-test-3 --image test-image instance-1
UEFI 安全启动支持
- 以下驱动程序支持 UEFI 安全启动部署
- iscsi_ilo
- agent_ilo
测试平台:此功能在具有 iLO 4 的 HP Proliant Gen9 服务器及更高版本上可用。它已使用以下服务器进行了测试
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
可以通过在 Ironic 节点的 properties 字段中的 capabilities 参数中添加 secure_boot 参数来在 Ironic 中配置 UEFI 安全启动模式。
secure_boot 是一个布尔参数,其值为 true 或 false。
要启用节点上的 secure_boot,请将其添加到 capabilities 中,如下所示:
ironic node-update <node-uuid> add properties/capabilities='secure_boot:true'
或者,也可以使用硬件检查来填充安全启动功能。
具有 secure_boot 设置为 true 的节点可以通过在 Nova flavor 中添加 extra_spec 来请求:
nova flavor-key ironic-test-3 set capabilities:secure_boot="true" nova boot --flavor ironic-test-3 --image test-image instance-1
如果 extra_spec 中使用 capabilities 如上所示,Nova 调度器(ComputeCapabilitiesFilter)将仅匹配在 properties/capabilities 中适当设置了 secure_boot 的 Ironic 节点。它将过滤掉其余节点。
Nova 中的上述匹配机制可用于异构环境,其中既有支持 UEFI 安全启动的机器,也有不支持的机器,并且操作员希望为用户提供有关安全启动的选择。如果 flavor 不包含 secure_boot,则 Nova 调度器将不会将安全启动模式视为放置标准,因此用户可能会获得与用户指定的 flavor 匹配的安全启动功能机器,但部署将不会使用其安全启动功能。只有通过 flavor 明确指定,才会发生安全启动部署
使用元素 ubuntu-signed 或 fedora 从 diskimage-builder_ 构建签名的 ubuntu 部署 iso 和用户镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kernel、deploy-ramdisk.initramfs 和 deploy-ramdisk.iso 的文件
pip install "diskimage-builder" ramdisk-image-create -o deploy-ramdisk ubuntu-signed deploy-ironic iso
以下命令在当前工作目录中创建名为 cloud-image-boot.iso、cloud-image.initrd、cloud-image.vmlinuz 和 cloud-image.qcow2 的文件
disk-image-create -o cloud-image ubuntu-signed baremetal iso
注意:
- 在实例镜像启动时启用 UEFI 安全启动。裸机部署以 UEFI 启动模式进行。
- 在 UEFI 安全启动中,数字签名的引导加载程序应能够验证启动过程中内核的数字签名。这要求引导加载程序包含内核的数字签名。对于 iscsi_ilo 驱动程序,建议用户镜像的 boot_iso 属性包含引导 ISO 的 Glance UUID。如果用户镜像的 Glance 中未更新 boot_iso 属性,它将使用部署 iso 中的引导加载程序创建 boot_iso。只有当引导加载程序已签名并且可以验证用户镜像内核的数字签名时,此 boot_iso 才能在 UEFI 安全启动环境中引导用户镜像。
- 确保已签名镜像的公钥已加载到裸机中以部署已签名镜像。对于 HP Proliant Gen9 服务器,可以使用 iLO 系统实用程序 UI 注册公钥。请参阅 HP UEFI 系统实用程序用户指南 中的“访问安全启动选项”部分。您还可以参考白皮书 HP Proliant 服务器上的 Linux 安全启动,了解更多详细信息。
硬件检查
以下驱动程序支持硬件检查
- pxe_ilo
- iscsi_ilo
- agent_ilo
- 可以使用以下命令启动检查
- 将节点移动到可管理状态
ironic node-set-provision-state <node_UUID> manage
- 启动检查
ironic node-set-provision-state <node_UUID> inspect
注意
- 在检查之前应预先配置 RAID,否则 proliantutils 将返回 0(零) 作为 磁盘大小。
- 仅可以检索具有配置 RAID 的真实 Smart Array 控制器的磁盘大小。
- 对于直接存储和动态 Smart Array 控制器,操作员必须在检查后手动输入磁盘大小。
- 对于 nic_capacity 能够被发现,iLO 固件版本 应该为 2.10 或更高版本。
检查过程将发现以下基本属性(用于调度部署的属性)
- memory_mb:内存大小
- cpus:CPU 数量
- cpu_arch:CPU 架构
- local_gb:磁盘大小
硬件检查还可以发现 iLO 驱动程序的以下额外功能
- ilo_firmware_version:iLO 固件版本
- rom_firmware_version:系统 ROM 固件版本
- secure_boot:是否支持安全启动。可能的值为“true”或“false”。如果服务器支持安全启动,则返回的值为“true”。
- server_model:服务器型号
- pci_gpu_devices:连接到裸机的 GPU 设备数量。
- nic_capacity:嵌入式 NIC 适配器的最大速度。
操作员可以在 nova flavor 中指定这些功能,以便选择节点进行调度
nova flavor-key my-baremetal-flavor set capabilities:server_model="<in> Gen8" nova flavor-key my-baremetal-flavor set capabilities:pci_gpu_devices="> 0" nova flavor-key my-baremetal-flavor set capabilities:nic_capacity="10Gb" nova flavor-key my-baremetal-flavor set capabilities:ilo_firmware_version="<in> 2.10" nova flavor-key my-baremetal-flavor set capabilities:secure_boot="true"
以上只是在 nova flavor 中使用功能的示例。
启用 Swift 中的 HTTPS
iLO 驱动程序 iscsi_ilo 和 agent_ilo 使用 Swift 存储引导镜像和管理信息。默认情况下,Swift 中未启用 HTTPS。HTTPS 需要加密 Ironic Conductor 和 Swift 代理服务器之间的所有通信,从而防止窃听网络数据包。可以通过以下方式之一启用它
- 使用 SSL 终止代理。有关更多信息,请参阅 https://docs.openstack.org/security-guide/content/tls-proxies-and-http-services.html
- 使用 Swift 中的本机 SSL 支持(目前仅推荐用于测试目的)。
- 使用以下命令创建 SSL 自签名证书
cd /etc/swift openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
- 将以下行添加到 /etc/swift/proxy-server.conf 下的 [DEFAULT] 中
bind_port = 443 cert_file = /etc/swift/cert.crt key_file = /etc/swift/cert.key
- 重新启动 Swift 代理服务器。
节点清理
- 以下驱动程序支持节点清理
- pxe_ilo
- iscsi_ilo
- agent_ilo
默认情况下启用节点清理。可以在 ironic.conf 中更改此设置。
[conductor] clean_nodes=true
或者
[conductor] clean_nodes=false
节点设置为清理状态的情况如下 -
- 在删除现有实例期间
ironic node-set-provision-state <node-uuid> deleted
- 或在将节点从 MANAGEABLE 状态移动到 AVAILABLE 状态时
ironic node-set-provision-state <node-uuid> provide
当前,支持的带外 iLO 清理操作是
- reset_ilo:重置 iLO。默认情况下,优先级为 1 启用。
- reset_ilo_credential:重置 iLO 密码,如果将 ‘ilo_change_password’ 指定为节点 driver_info 的一部分。默认情况下,优先级为 30 启用。
- reset_bios_to_default:将 BIOS 设置重置为默认值。默认情况下,在 Gen9 及更高版本的服务器上启用,优先级为 10。
- reset_secure_boot_keys:将安全启动密钥重置为制造商的默认值。此步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,优先级为 20。
- clear_secure_boot_keys:清除所有安全启动密钥。此步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,此步骤已禁用。
此外,agent_ilo 驱动程序支持机内磁盘擦除操作。
要禁用或更改特定清理步骤的优先级,必须更新 ironic.conf 中的相应配置选项
[ilo] clean_priority_reset_ilo=1 clean_priority_reset_bios_to_default=10 clean_priority_reset_secure_boot_keys_to_default=20 clean_priority_clear_secure_boot_keys=0 clean_priority_reset_ilo_credential=30 clean_priority_erase_devices=10
要禁用特定清理步骤,请将该步骤的优先级更新为 0。
实例镜像
所有 iLO 驱动程序都支持部署整个磁盘镜像。整个磁盘镜像可以是以下类型之一
1. 仅 BIOS 镜像。仅具有 MBR 分区的镜像,并且仅在 BIOS 启动模式下启动。
2. 仅 UEFI 镜像。具有 GPT 分区的镜像,并且仅在 UEFI 启动模式下启动。
3. 混合镜像。同时具有 GPT 和 MBR 分区的镜像,并且可以在 BIOS 和 UEFI 启动模式下启动。
4. 签名 UEFI 镜像。 UEFI 镜像,其中启动加载程序和内核已签名,可用于 UEFI 安全启动环境。
一些 Linux 发行版提供整个磁盘镜像。示例包括:
1. Ubuntu - https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-uefi1.img
2. CoreOS - http://stable.release.core-os.net/amd64-usr/current/coreos_production_openstack_image.img.bz2
3. OpenSuse - https://susestudio.com(它允许您通过浏览器构建镜像)
下表总结了整个磁盘镜像的功能
| 镜像类型 | 启动模式 | Config Drive | UEFI 安全启动 |
|---|---|---|---|
| 仅 BIOS | BIOS | Yes | 不适用 |
| 仅 UEFI | UEFI | Yes | 否 |
| UEFI 签名 | UEFI | Yes | Yes |
| 混合 | BIOS 和 UEFI | 请参阅下面的注释 | 如果已签名,则可以 |
注意:Ironic 的 Config Drive 功能可能无法在所有全盘镜像上工作,尤其是在混合镜像中,在创建 config drive 分区时,分区信息可能会丢失,导致配置失败或实例无法启动。
并非所有 Linux 发行版都支持混合镜像(可以在 BIOS 和 UEFI 启动模式下启动的单个镜像)。如果镜像只能在特定启动模式下启动,则用户需要在 nova flavor 的 extra_spec 中添加 'boot_mode' 功能。可以通过 ComputeCapabilitesFilter 从 nova 请求特定的启动模式。例如:-
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi" nova boot --flavor ironic-test-3 --image test-image instance-1
对于 pxe-ilo 驱动程序,要在 UEFI 启动模式下部署全盘镜像,用户需要在 nova flavor 的 extra_spec 中添加 boot_option="local" 功能。例如:-
nova flavor-key ironic-test-3 set capabilities:boot_mode="uefi" capabilities:boot_option="local" nova boot --flavor ironic-test-3 --image test-image instance-1
已知问题
| 序号 | 固件版本 | 已知问题 | 解决方案 |
|---|---|---|---|
| 1 | BIOS 系统 ROM 版本 1.20 | 在 Gen9 服务器上部署失败,因为 iLO 不会遵守一次性启动设备设置,而是尝试从持久启动设备启动。 | 这是由于 BIOS 系统 ROM 中的缺陷造成的。从 2015 年 5 月 13 日的固件版本 1.32_03-05-2015 开始提供修复。 |
| 2 | Smart Array SAS 驱动程序 v8.03 | 基于 Fedora 的 IPA 部署 ramdisk ISO 在出现“error: can't allocate initrd”错误时无法启动,如果基于 P220 的智能阵列控制器连接到 ProLiant 服务器。 | 这是 P220 基于智能阵列的固件中的 Fishman 驱动程序问题。该缺陷已提交到 Fishman 固件。驱动程序补丁将很快提供。 |
| 3 | iLO 版本 2.20 | 使用 iLO 驱动程序中的任何一个在 Gen9 服务器上部署都可能失败,并在 conductor 日志中出现“Invalid Device Choice”错误,同时设置持久启动设备。此问题仅在 Gen9 服务器运行 iLO 固件版本 2.20 时发生 | 此问题在于 iLO 固件,如果在 Gen9 服务器上使用 RIBCL 更新 UEFI 启动模式下的持久启动设备,则会以上述错误消息失败。可以通过以下方法之一解决此问题:- A. 将 iLO 固件版本降级到 2.10 或升级到高于 2.20 的版本 B. 将 python 包 'proliantutils' 升级到版本大于或等于 2.1.3。此问题已通过增强 'proliantutils' 以使用 HP REST 接口来更新 Gen9 服务器的持久启动设备而得到解决。 $ sudo pip install "proliantutils>=2.1.3" |
| 4 | 不适用 | Openstack 文档 (https://docs.openstack.org/developer/ironic/) 没有记录 在 Swift 中启用 HTTPS | 请参阅 iLO 驱动程序 wiki 的 在 Swift 中启用 HTTPS 部分 (https://wiki.openstack.org/wiki/Ironic/Drivers/iLODrivers/Kilo#Enabling_HTTPS_in_Swift) 以获取有关如何启用它的信息和步骤。 |
| 5 | 不适用 | 当 OpenStack 环境中启用 SSL 并且要附加到 iLO 虚拟媒体的镜像基于 'https' 时,iLO 无法读取/使用这些镜像启动。 | iLO 固件版本可能不支持 SSL 服务器上启用的密码。请参阅 iLO 固件文档,以确保使用的密码受支持 http://h10032.www1.hp.com/ctg/Manual/c03334051。 建议您也参考正在使用的 iLO 固件版本的“发行说明”以获取更多详细信息。 |
参考文献
- [1] HP iLO 4 用户指南 - http://h20628.www2.hp.com/km-ext/kmcsdirect/emr_na-c03334051-11.pdf
- [2] Proliantutils 模块 - https://pypi.python.org/pypi/proliantutils
- [3] DiskImage-Builder - https://github.com/openstack/diskimage-builder
- [4] https://docs.openstack.org/developer/glance/configuring.html#configuring-the-swift-storage-backend
- [5] Ironic Python Agent - https://github.com/openstack/ironic-python-agent
- [6] HP UEFI 系统实用程序用户指南 - http://www.hp.com/ctg/Manual/c04398276.pdf
- [7] HP Proliant 服务器上的 Linux 安全启动 http://h20195.www2.hp.com/V2/getpdf.aspx/4AA5-4496ENW.pdf