Ironic/Drivers/iLODrivers/ocata
目录
iLO 驱动程序 (主分支)
概述
iLO驱动程序能够利用HP ProLiant服务器中iLO管理引擎的特性。iLO驱动程序面向HP ProLiant Gen 8系统及更高版本,这些系统具有iLO 4管理引擎。
目前有3个iLO驱动程序
iscsi_ilo和agent_ilo驱动程序通过使用iLO虚拟媒体启动裸机节点,提供安全增强的无PXE部署。这些驱动程序通过管理通道发送管理信息,并将其与用于部署的数据通道分开。
iscsi_ilo和agent_ilo驱动程序使用从diskimage-builder构建的部署ramdisk。iscsi_ilo驱动程序从ironic conductor部署,并支持实例的网络启动和本地启动。agent_ilo从裸机节点部署,并支持实例的网络启动和本地启动。
pxe_ilo驱动程序使用PXE/iSCSI进行部署(就像普通的PXE驱动程序一样),并从ironic conductor部署。此外,它支持自动设置nova flavor的extra spec请求的启动模式。此驱动程序不需要iLO高级许可证。
先决条件
- proliantutils 是一个 Python 包,包含用于管理 HP ProLiant 硬件的一组模块。在 Ironic conductor 节点上安装 proliantutils 模块。最低版本要求为 2.1.11。
$ pip install "proliantutils>=2.1.11"
- ipmitool 命令必须存在于运行 ironic-conductor 的服务节点上。在大多数 Linux 发行版上,这作为 ipmitool 包的一部分提供。源代码可在 http://ipmitool.sourceforge.net/ 上找到。
iLO驱动程序的不同配置
配置 Glance 镜像服务
1. 使用其存储后端配置 Glance 镜像服务为 Swift。有关配置说明,请参见 [4]_。
2. 为 Swift 中的 Glance 用户设置临时 URL 密钥。例如,如果您已将 Glance 配置为用户 `glance-swift 和租户为 service,则运行以下命令:
swift --os-username=service:glance-swift post -m temp-url-key:mysecretkeyforglance
3. 填写 /etc/ironic/ironic.conf 中的 [glance] 部分所需的参数。通常,您需要填写以下详细信息。
[glance] swift_temp_url_key=mysecretkeyforglance swift_endpoint_url=https://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
4. Swift 必须使用在 Ironic 中配置的相同管理员凭据进行访问。例如,如果 Ironic 在 /etc/ironic/ironic.conf 中配置了以下凭据
[keystone_authtoken] admin_password = password admin_user = ironic admin_tenant_name = service
确保 keystone_authtoken 中的 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
5. 重新启动 Ironic conductor 服务。
$ service ironic-conductor restart
Conductor 上的 Web 服务器配置
HTTP(S) Web服务器可以通过多种方式配置。对于Ubuntu上的apache Web服务器,请参阅此处
需要在 /etc/ironic/ironic.conf 中设置以下配置变量
use_web_server_for_images 在 [ilo] 部分
[ilo] use_web_server_for_images = True http_url and http_root in [deploy] section:
[deploy] # Ironic compute node's http root path. (string value) http_root=/httpboot
# Ironic compute node's HTTP server URL. Example: # http://192.1.2.3:8080 (string value) http_url=http://192.168.0.2:8080
use_web_server_for_images:如果变量设置为false,iscsi_ilo和agent_ilo使用Swift容器来托管中间FAT镜像和启动ISO。如果变量设置为true,这些驱动程序使用本地Web服务器来托管中间文件。use_web_server_for_images的默认值为False。
http_url:此变量的值将作为前缀添加到生成的中间文件中,以生成附加到虚拟媒体的 URL。
http_root:这是 ironic conductor 复制中间软盘镜像和启动 ISO 的目录位置。
为增强安全性,强烈建议使用HTTPS而不是HTTP Web服务器配置。如果启用了HTTPS Web服务器,iscsi_ilo和agent_ilo将通过加密通道发送实例的configdrive。
启用 Swift 中的 HTTPS
iLO驱动程序iscsi_ilo和agent_ilo使用Swift存储启动镜像和管理信息(用于Ironic conductor配置裸机硬件)。默认情况下,Swift中未启用HTTPS。HTTPS需要加密Swift与Ironic conductor之间以及Swift与裸机(通过虚拟媒体)之间的所有通信。可以通过以下方式之一启用它
- 使用 SSL 终止代理。有关更多信息,请参阅 https://docs.openstack.org/security-guide/content/tls-proxies-and-http-services.html。
- 使用 Swift 中的本机 SSL 支持(仅建议 Swift 用于测试目的)
- 使用以下命令创建自签名证书以进行 SSL:
cd /etc/swift
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
- 将以下行添加到 /etc/swift/proxy-server.conf 下的 [DEFAULT]:
bind_port = 443 693
cert_file = /etc/swift/cert.crt 694
key_file = /etc/swift/cert.key 695
- 重新启动 Swift 代理服务器。
独立 iLO 驱动程序的 Web 服务器配置
- 设置 Web 服务器,该服务器提供部署 ramdisk,位于 ironic-conductor 主机之外。此 Web 服务器应可供 conductor 节点访问。
- 上传部署 ramdisk 镜像,以便上述步骤中的 Web 服务器可以正确提供它们。
- 在每个 conductor 上设置 Web 服务器。此步骤仅适用于 agent_ilo 和 iscsi_ilo。
必须创建镜像(参见 :ref:`BuildingDibBasedDeployRamdisk`)并使其可通过 HTTP(S) URL 下载。本文档不描述 HTTP(S) 服务器的安装或配置,但是,
- 如果使用 [i]PXE,则网络引导加载程序必须能够启动请求以下载内核和 ramdisk 镜像,而 ironic-conductor 必须能够将文件写入“http_root”,这些文件将从“http_url”提供。
- 部署代理必须能够启动请求从“http_url”下载实例镜像。
独立 iLO 驱动程序的必要条件
- iLO 4 高级许可证需要安装在 iLO 上才能启用虚拟介质功能。
- conductor 上的本地 Web 服务器 - ilo 驱动程序使用 conductor 节点上的 Web 服务器来存储临时 FAT 镜像以及启动 ISO 镜像。需要在每个 conductor 节点上进行配置。
- HTTP(s) Web 服务器 - 使用 ilo 驱动程序时,包含 agent/deploy ramdisk 的镜像将由 iLO 直接从 HTTP(s) Web 服务器获取。此 Web 服务器不需要位于 conductor 节点上。有关更多信息,请参阅 `基于 HTTP(s) 的部署`__。
- 请参阅 `独立 iLO 驱动程序的 Web 服务器配置`_
配置独立 iLO 驱动程序
1. 在 /etc/ironic/ironic.conf 的 [deploy] 部分中添加 http_url 和 http_root。例如
http_url = https://10.10.1.10:8080/httpboot/ http_root = /opt/stack/data/ironic/httpboot/
这些决定了 conductor 上的 Web 服务器如何提供镜像。http_url 是用于提供镜像的 URL 前缀。http_root 是 Web 服务器在 http_url 处提供的磁盘上的路径。
2. 重新启动 Ironic conductor 服务
$ service ironic-conductor restart
与 Glance 镜像服务的需求
- iLO 4 高级许可证需要安装在 iLO 上才能启用虚拟介质功能。
- Swift 对象存储服务 - ilo 驱动程序使用 Swift 来存储临时 FAT 镜像/启动 ISO。
- 配置了 Swift 作为其后端的 Glance 镜像服务 - 使用 ilo 驱动程序时,包含 agent/deploy ramdisk 的镜像将由 iLO 直接从 Swift 获取。
驱动程序
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 通过 Swift 端点来增强安全性,从而传递管理信息。管理信息和启动镜像将通过加密的管理网络通过 iLO 虚拟介质进行检索。
已测试平台
此驱动程序应适用于配备 iLO 3 的 HPE ProLiant Gen7 服务器,以及配备 iLO 4 的 Gen8 服务器及更高版本。
它已使用以下服务器进行了测试
- ProLiant DL380 G7
- ProLiant SL230s Gen8
- ProLiant DL320e Gen8
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant BL460c Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
- ProLiant BL460c Gen9
- ProLiant XL450 Gen9 UEFI
特性
- 使用虚拟介质进行无 PXE 部署。
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- 支持从虚拟介质启动实例以及从磁盘本地启动。默认情况下是从虚拟介质启动。
- UEFI 启动
- UEFI 安全启动
- 如果 Swift 代理服务器具有 HTTPS 端点,则通过安全、加密的管理网络(虚拟介质)传递管理信息。有关更多信息,请参阅 启用 Swift 中的 HTTPS。通过数据网络使用 iSCSI 进行配置,因此该驱动程序具有相同的性能,并具有安全增强功能。它将管理信息与数据通道隔离。
- 远程控制台(基于 IPMI)
- 硬件传感器
- 适用于资源受限的机器(内存较少)。
- 本地启动(BIOS 和 UEFI)
- 支持部署整个磁盘镜像。
- 支持带外硬件检查。
- 节点清理。
- 独立 iLO 驱动程序。
需求
- iLO 4 高级许可证需要安装在 iLO 上才能启用虚拟介质功能。
- Swift 对象存储服务或 conductor 上的 HTTP(s) Web 服务器 - iLO 驱动程序使用 Swift/HTTP(s) Web 服务器(位于 conductor 节点上)来存储临时 FAT 镜像以及启动 ISO 镜像。
- 配置了 Swift 作为其后端的 Glance 镜像服务或 HTTP(s) Web 服务器 - 使用 iscsi_ilo 驱动程序时,包含 deploy ramdisk 的镜像将由 iLO 直接从 Swift/HTTP(s) Web 服务器获取。
部署过程
- 管理员为 iscsi_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含 Glance UUID 或 ISO 部署 ramdisk 镜像的 HTTP(s) 位置。
- Ironic 收到请求以在裸机节点上部署 Glance/HTTP(s) 镜像。
- iscsi_ilo 驱动程序关闭裸机节点。
- 如果 ilo_deploy_iso 是 Glance UUID,则驱动程序为 deploy ramdisk 镜像生成 swift-temp-url,并将其作为 iLO 上的虚拟介质 CDROM 附加。如果 ilo_deploy_iso 是 HTTP(s) URL,则驱动程序将其直接作为 iLO 上的虚拟介质 CDROM 附加。
- 驱动程序创建一个包含 deploy ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift/HTTP(s) Web 服务器,其 swift-temp-url/HTTP(s) URL 作为 iLO 上的虚拟介质软盘附加。
- 驱动程序将节点设置为从 CDROM 一次性启动。
- 驱动程序打开裸机节点。
- 包含 deploy 内核/ramdisk 的部署内核/ramdisk 在裸机节点上启动。ramdisk 通过 iSCSI 暴露本地磁盘,并请求 Ironic conductor 完成部署。
- Ironic conductor 上的驱动程序将 glance/HTTP(s) 镜像写入裸机节点的磁盘。
- 如果请求本地启动,Ironic conductor 会要求部署 ramdisk 安装启动加载程序。
- 如果它是 netboot(默认),则驱动程序将部署镜像的启动内核/ramdisk 捆绑到 ISO 中,然后将其上传到 Swift/HTTP(s) Web 服务器。此 ISO 镜像将用于启动部署的实例。
- 驱动程序重新启动节点。
- 对于 netboot,在第一次和后续重新启动时,iscsi_ilo 驱动程序将 Swift/HTTP(s) 中的此启动 ISO 镜像作为虚拟介质 CDROM 附加,然后将 iLO 设置为从中启动。如果将 boot_option 设置为 local,则从磁盘启动实例。
配置和启用驱动程序
注意:创建 HTTP(s) Web 服务器并将镜像上传到 HTTP(s) Web 服务器的步骤不在 Ironic 的范围内。
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. 将 iscsi_ilo 添加到 /etc/ironic/ironic.conf 中的 enabled_drivers 列表中。例如::
enabled_drivers = fake,pxe_ssh,pxe_ipmitool,iscsi_ilo
如果使用 HTTP(s) Web 服务器
4. 在 /etc/ironic/ironic.conf 的 [deploy] 部分中添加 http_url 和 http_root。例如::
http_url = http://10.10.1.10:8080/httpboot/ http_root = /opt/stack/data/ironic/httpboot/
如果使用其存储后端为 Swift 的 Glance 镜像服务
5. 将 Glance 镜像服务配置为使用 Swift 作为其存储后端。有关配置说明,请参阅 此处。
6. 为 Swift 中的 Glance 用户设置 temp-url 密钥。例如,如果您已将 Glance 配置为用户 glance-swift 和租户为 service,则运行以下命令:
swift --os-username=service:glance-swift post -m temp-url-key:mysecretkeyforglance
7. 填写 /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
8. 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
最后
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:deploy ramdisk ISO 镜像的 Glance UUID 或 HTTP(s) URL。
- ca_file:(可选)用于验证 iLO 的 CA 证书文件。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
注意:
- 要将 SSL 证书更新到 iLO,您可以参考 http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504 。您可以使用 iLO 主机名或 IP 地址作为生成证书签名请求 (CSR) 时的“通用名称 (CN)”。在将节点注册到 Bare Metal 服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
- 如果未在节点的 driver_info 中提供 ca_file、client_port 和 client_timeout 的配置值,则将使用 ironic.conf 的 [ilo] 部分中定义的相应配置变量。
例如,您可以运行如下命令来注册 ProLiant 节点
ironic node-create -d iscsi_ilo -i ilo_address=<ilo-ip-address> -i ilo_username=<ilo-username> -i ilo_password=<ilo-password> -i ilo_deploy_iso=<glance-uuid-of-deploy-iso>
启动模式
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 3 的 HPE ProLiant Gen7 服务器,以及配备 iLO 4 的 Gen8 服务器及更高版本。
它已使用以下服务器进行了测试
- ProLiant DL380 G7
- ProLiant SL230s Gen8
- ProLiant DL320e Gen8
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant BL460c Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
- ProLiant BL460c Gen9
- ProLiant XL450 Gen9 UEFI
特性
- 使用 Ironic Python Agent 进行无 PXE 部署。
- 远程控制台(基于 IPMI)
- 硬件传感器
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- UEFI 启动
- UEFI 安全启动
- 支持从虚拟介质启动实例以及从磁盘本地启动。
- 支持部署整个磁盘镜像和分区镜像。
- 本地启动(BIOS 和 UEFI)
- 将管理信息与数据通道隔离。
- 支持带外硬件检查。
- 节点清理。
- 独立 iLO 驱动程序。
- 支持为配置为 VLAN 类型网络的节点实例进行租户网络隔离。
需求
- iLO 4 Advanced License需要安装在iLO上才能启用虚拟媒体功能。
- Swift 对象存储服务或 conductor 上的 HTTP(s) Web 服务器 - iLO 驱动程序使用 Swift/HTTP(s) Web 服务器(位于 conductor 节点上)来存储临时 FAT 镜像以及启动 ISO 镜像。
- 配置了 Swift 作为其后端的 Glance 镜像服务或 HTTP(s) Web 服务器 - 使用 agent_ilo 驱动程序时,包含 agent 的镜像将由 iLO 直接从 Swift/HTTP(s) Web 服务器获取。
部署过程
- 管理员为 agent_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含包含 agent 的 ISO 部署 agent 镜像的 Glance UUID/HTTP(s) URL。
- Ironic 收到请求以在裸机节点上部署 Glance/HTTP(s) 镜像。
- 驱动程序关闭裸机节点。
- 如果 ilo_deploy_iso 是 Glance UUID,则驱动程序为 deploy agent 镜像生成 swift-temp-url,并将其作为 iLO 上的虚拟介质 CDROM 附加。如果 ilo_deploy_iso 是 HTTP(s) URL,则驱动程序将其直接作为 iLO 上的虚拟介质 CDROM 附加。
- 驱动程序创建一个包含 agent ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift/HTTP(s),其 swift-temp-url/HTTP(s) URL 作为 iLO 上的虚拟介质软盘附加。
- 驱动程序将节点设置为从 CDROM 一次性启动。
- 驱动程序打开裸机节点。
- 包含 agent 的部署内核/ramdisk 在裸机节点上启动。agent ramdisk 与 Ironic conductor 通信,直接从 Swift/HTTP(s) 下载镜像,并将镜像写入节点上的选定磁盘。
- 驱动程序将节点设置为永久从磁盘启动,然后重新启动节点。
配置和启用驱动程序
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。
- ca_file:(可选)用于验证 iLO 的 CA 证书文件。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
注意:
- 要将 SSL 证书更新到 iLO,您可以参考 http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504 。您可以使用 iLO 主机名或 IP 地址作为生成证书签名请求 (CSR) 时的“通用名称 (CN)”。在将节点注册到 Bare Metal 服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
- 如果未在节点的 driver_info 中提供 ca_file、client_port 和 client_timeout 的配置值,则将使用 ironic.conf 的 [ilo] 部分中定义的相应配置变量。
例如,您可以运行如下命令来注册 ProLiant 节点
ironic node-create -d agent_ilo -i ilo_address=<ilo-ip-address> -i ilo_username=<ilo-username> -i ilo_password=<ilo-password> -i ilo_deploy_iso=<glance-uuid-of-deploy-iso>
启动模式
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 3 的 HPE ProLiant Gen7 服务器,以及配备 iLO 4 的 Gen8 服务器及更高版本。
它已使用以下服务器进行了测试
- ProLiant DL380 G7
- ProLiant SL230s Gen8
- ProLiant DL320e Gen8
- ProLiant DL380e Gen8
- ProLiant DL580e Gen8
- ProLiant BL460c Gen8
- ProLiant DL180 Gen9 UEFI
- ProLiant DL360 Gen9 UEFI
- ProLiant DL380 Gen9 UEFI
- ProLiant BL460c Gen9
- ProLiant XL450 Gen9 UEFI
特性
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- 远程控制台(基于 IPMI)
- 硬件传感器
- UEFI 启动
- UEFI 安全启动
- 本地启动(BIOS 和 UEFI)
- 支持部署整个磁盘镜像和分区镜像。
- 支持从 PXE 启动实例以及从磁盘本地启动。
- 将管理信息与数据通道隔离。
- 支持带外硬件检查。
- 节点清理
- 独立 iLO 驱动程序。
需求
无。
配置和启用驱动程序
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。
- ca_file:部署 ramdisk 的 Glance UUID。
- client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
- client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
- console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
注意:
- 要将 SSL 证书更新到 iLO,您可以参考 http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=c04530504 。您可以使用 iLO 主机名或 IP 地址作为生成证书签名请求 (CSR) 时的“通用名称 (CN)”。在将节点注册到 Bare Metal 服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
- 如果未在节点的 driver_info 中提供 ca_file、client_port 和 client_timeout 的配置值,则将使用 ironic.conf 的 [ilo] 部分中定义的相应配置变量。
例如,您可以运行如下命令来注册 ProLiant 节点
ironic node-create -d pxe_ilo -i ilo_address=<ilo-ip-address> -i ilo_username=<ilo-username> -i ilo_password=<ilo-password> -i deploy_kernel=<glance-uuid-of-pxe-deploy-kernel> -i deploy_ramdisk=<glance-uuid-of-deploy-ramdisk>
启动模式
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
- pxe_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 安全启动环境中引导用户镜像。
- 对于 pxe_ilo 驱动程序,在部署分区镜像的情况下,请确保在部署期间使用的已签名 grub2 引导加载程序可以验证实例分区镜像中的内核的数字签名。如果已签名的 grub2 无法验证实例分区镜像中的内核,则启动将失败。
- 确保已签名镜像的公钥已加载到裸机中以部署已签名镜像。对于 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 时,RIBCL/RIS 才会返回磁盘大小。如果存储是直连存储,则 RIBCL/RIS 无法获取磁盘大小。
- SNMPv3 检查获取所有类型存储的磁盘大小。如果 RIBCL/RIS 无法获取磁盘大小并且请求了 SNMPv3 检查,则 proliantutils 会执行 SNMPv3 检查以获取磁盘大小。如果 proliantutils 无法获取磁盘大小,则会引发错误。此功能在 proliantutils 版本 >= 2.2.0 中可用。
- iLO 必须使用 SNMPv3 身份验证详细信息进行更新。有关设置 iLO 上的身份验证详细信息,请参阅 `http://h20566.www2.hpe.com/hpsc/doc/public/display?docId=c03334051' 中的“`SNMPv3 身份验证`”部分。驱动程序信息中需要提供以下参数才能进行 SNMPv3 检查
- ``snmp_auth_user`` :SNMPv3 用户。
- ``snmp_auth_prot_password`` :身份验证协议密码。
- ``snmp_auth_priv_password`` :隐私协议密码。
- 以下参数是 SNMPv3 检查的可选参数
- ``snmp_auth_protocol`` :身份验证协议。有效值为“MD5”和“SHA”。iLO 默认值为“MD5”。
- ``snmp_auth_priv_protocol`` :隐私协议。有效值为“AES”和“DES”。iLO 默认值为“DES”。
- 对于 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 提供两种节点清理模式:自动 和 手动。自动清理在第一次将工作负载分配给节点以及在硬件从一个工作负载回收到另一个工作负载时自动执行,而 手动清理必须由操作员调用。
自动清理
默认情况下启用节点自动清理。可以在 ironic.conf 中更改此设置。(在 Mitaka 之前,此选项名为“clean_nodes”)
[conductor] automated_clean=true
或者
[conductor] automated_clean=false
节点设置为清理状态的情况如下 -
- 在删除现有实例期间,即节点从 ACTIVE -> AVAILABLE 状态移动时
ironic node-set-provision-state <node-uuid> deleted
- 或在节点从 MANAGEABLE -> AVAILABLE 状态移动时
ironic node-set-provision-state <node-uuid> provide
目前,支持的带外 iLO 自动清理操作是
- reset_bios_to_default:将系统 ROM / BIOS 设置重置为默认值。此清理步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,优先级为 10 启用。
- reset_secure_boot_keys_to_default:将安全启动密钥重置为制造商的默认值。此步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,优先级为 20 启用。
- reset_ilo_credential:重置 iLO 密码,如果 ‘ilo_change_password’ 作为节点驱动程序信息的一部分指定。默认情况下,优先级为 30 启用。
- clear_secure_boot_keys:清除所有安全启动密钥。此步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,此步骤已禁用。
- reset_ilo:重置 iLO。默认情况下,此步骤已禁用。
此外,agent_ilo 驱动程序支持带内自动清理操作 erase_devices。它在 HPE Proliant 服务器上执行 Sanitize Erase。如果使用从 Ocata 版本构建的 diskimage-builder 创建的 ramdisk,则此步骤仅支持 Proliant 服务器上的清理磁盘擦除,否则它将执行 Ironic Python Agent 中可用的 erase_devices 实现。默认情况下,此步骤已禁用。有关更多信息,请参阅 清理磁盘擦除支持。
您还需要配置 清理网络。要禁用或更改特定自动清理步骤的优先级,需要更新 ironic.conf 中的相应配置选项。
[ilo] clean_priority_reset_ilo=0 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 [deploy] erase_devices_priority=0
要禁用特定的自动清理步骤,请将步骤的优先级更新为 0。有关节点自动清理的更多信息,请参阅 自动清理
手动清理
在启动手动清理时,操作员指定要执行的清理步骤。只有当节点处于 MANAGEABLE 状态时,才能执行手动清理。手动清理完成后,节点将再次置于 MANAGEABLE 状态。只有当 REST API 请求启动它在 API 版本 1.15 及更高版本中可用时,才能执行手动清理。因此,从命令行您需要执行
ironic --ironic-api-version 1.15 node-set-provision-state --clean-steps input_manual_clean_steps.json <node-uuid> clean
目前,支持的带外 iLO 手动清理操作是
- activate_license:
- 激活 iLO 高级许可证。这是与管理界面关联的带外手动清理步骤。请注意,由于它们需要已经激活此类型的高级许可证才能使用虚拟媒体进行引导以开始清理操作,因此虚拟媒体驱动程序(如 iscsi_ilo 和 agent_ilo)无法执行此操作。虚拟媒体是一项高级功能。如果已经激活了高级许可证,并且用户希望覆盖当前的许可证密钥,例如在交付带有灵活数量套件的激活密钥或完成激活密钥协议 (AKA) 之后,则这些驱动程序仍然可以用于执行此清理步骤。
- 有关用法,请参阅 将 iLO 高级许可证作为手动清理步骤激活。
- update_firmware:
- 更新设备的固件。也是与管理界面关联的带外步骤。支持固件更新的设备是:ilo、cpld、power_pic、bios 和 chassis。某些设备的固件无法通过此方法更新,例如:存储控制器、主机总线适配器、磁盘驱动器固件、网络接口和 Onboard Administrator (OA)。请参阅下表了解上述组件的常用说明。
装置 描述 ilo HPE ProLiant 服务器的 BMC cpld 系统可编程逻辑设备 power_pic 电源管理控制器 bios HPE ProLiant 系统 ROM chassis 系统底盘设备
- 有关用法,请参阅 将固件更新作为手动清理步骤启动。
有关节点手动清理的更多信息,请参阅 手动清理
激活 iLO 高级许可证作为手动清理步骤
iLO 驱动程序可以将 iLO Advanced 许可证密钥作为手动清理步骤激活。只有当节点处于 MANAGEABLE 状态时,才能启动任何手动清理步骤。手动清理完成后,节点将再次置于 MANAGEABLE 状态。用户可以按照 手动清理 中的步骤来启动节点上的手动清理操作。以下是在通过 ironic 客户端执行 iLO 高级许可证激活作为手动清理步骤的说明
ironic node-set-provision-state <node-uuid> manage ironic --ironic-api-version latest node-set-provision-state --clean-steps /home/deray/license_activation_clean_step.json <node-uuid> clean
包含 activate_license 作为唯一清理步骤的手动清理步骤示例(或 license_activation_clean_step.json 文件的典型内容)
[{
"interface": "management",
"step": "activate_license",
"args": {
"ilo_license_key": "ABC12-XXXXX-XXXXX-XXXXX-YZ345"
}
}]
activate_license 清理步骤的不同属性的含义如下
属性 描述 接口 清理步骤的接口,这里是 management step 清理步骤的名称,这里是 activate_license 参数 传递给清理步骤的关键字参数条目(<name>:<value>) args.ilo_license_key 要激活企业功能的 iLO Advanced 许可证密钥。这是必需的。
启动固件更新作为手动清理步骤
iLO 驱动程序可以将安全固件更新作为手动清理步骤调用。只有当节点处于 MANAGEABLE 状态时,才能启动任何手动清理步骤。手动清理完成后,节点将再次置于 MANAGEABLE 状态。用户可以按照 手动清理 中的步骤来启动节点上的手动清理操作。以下是在通过 ironic 客户端执行基于 iLO 的固件更新作为手动清理步骤的说明
ironic node-set-provision-state <node-uuid> manage ironic --ironic-api-version latest node-set-provision-state --clean-steps /home/deray/firmware_update_clean_step.json <node-uuid> clean
包含 update_firmware 作为唯一清理步骤的手动清理步骤示例(或 firmware_update_clean_step.json 文件的典型内容)
[{
"interface": "management",
"step": "update_firmware",
"args": {
"firmware_update_mode": "ilo",
"firmware_images":[
{
"url": "file:///firmware_images/ilo/1.5/CP024444.scexe",
"checksum": "a94e683ea16d9ae44768f0a65942234d",
"component": "ilo"
},
{
"url": "swift://firmware_container/cpld2.3.rpm",
"checksum": "<md5-checksum-of-this-file>",
"component": "cpld"
},
{
"url": "http://my_address:port/firmwares/bios_vLatest.scexe",
"checksum": "<md5-checksum-of-this-file>",
"component": "bios"
},
{
"url": "https://my_secure_address_url/firmwares/chassis_vLatest.scexe",
"checksum": "<md5-checksum-of-this-file>",
"component": "chassis"
},
{
"url": "file:///home/ubuntu/firmware_images/power_pic/pmc_v3.0.bin",
"checksum": "<md5-checksum-of-this-file>",
"component": "power_pic"
}
]
}
}]
update_firmware 清理步骤的不同属性的含义如下
属性 描述 接口 清理步骤的接口,这里是 management step 清理步骤的名称,这里是 update_firmware 参数 传递给清理步骤的关键字参数条目(<name>:<value>) args.firmware_update_mode 带外固件更新的模式(或机制)。支持的值是 ilo。这是必需的。 args.firmware_images 要刷写的镜像的有序字典列表。这是必需的。
每个固件镜像块都由一个字典(JSON)表示,形式如下
{
"url": <url of firmware image file>,
"checksum": <md5 checksum of firmware image file to verify the image>,
"component": <device on which firmware image will be flashed>
}
固件镜像块中的所有字段都是必需的。
- 支持的不同固件 url 方案是:file、http、https 和 swift。
- 注意:此功能假定在使用 file url 方案时,文件路径位于控制节点的 conductor 上。
- 注意:swift url 方案假定 service 项目的 swift 帐户。service 项目(租户)是在 Keystone 系统中创建的特殊项目,专供核心 OpenStack 服务使用。当 Ironic 使用 Swift 进行存储时,帐户通常是 service,容器通常是 ironic,并且 ilo 驱动程序为其自身目的使用名为 ironic_ilo_container 的容器。
- 注意:在使用扩展名为 .rpm 的固件文件时,请确保 conductor 上存在 rpm2cpio 和 cpio 命令,因为它们用于从软件包中提取固件镜像。
- 可以更新的固件组件包括:ilo、cpld、power_pic、bios 和 chassis。
- 固件镜像将按照操作员给定的顺序更新。如果在处理提供的固件镜像列表中的任何镜像时发生任何错误,则不会发生任何固件更新。处理错误可能发生在镜像下载、镜像校验和验证或镜像提取期间。逻辑是处理每个固件文件并仅在所有文件都成功处理后才在设备上更新它们。如果在更新(上传和刷写)过程中更新失败,则列表中的剩余更新(如果有)将被中止。但是,建议对失败进行分类和修复,并重新尝试手动清理步骤 update_firmware 以进行中止的 firmware_images。
- 固件已成功更新的设备将开始使用其新更新的固件运行。
- 作为整个过程的故障排除指南,请仔细检查 Ironic conductor 日志,查看是否有任何固件处理或更新相关的错误,这些错误可能有助于根本原因分析或了解事情停留在哪里或失败的原因。然后您可以修复或绕过并再次尝试。更新失败的常见原因是固件镜像文件的 HPE 安全数字签名检查失败。
- 要计算图像文件的 md5 校验和,用户可以使用以下命令
$ md5sum image.rpm 66cdb090c80b71daa21a67f06ecd3f33 image.rpm
RAID 支持
iLO 驱动程序支持带内 RAID 功能。有关更多信息,请参阅 https://docs.openstack.org/developer/ironic/deploy/raid.html#raid。成功配置 RAID 后,Bare Metal 服务使用以下信息更新节点
- 节点 properties/local_gb 设置为根卷的大小。
- 节点 properties/root_device 填充了根卷的 wwn 详细信息。它由 iLO 驱动程序用作配置期间的根设备提示。
- 根卷的 RAID 级别作为 raid_level 功能添加到节点 capabilities 参数中的 properties 字段中。操作员可以在 nova flavor 中指定 raid_level 功能,以选择用于调度的节点
nova flavor-key ironic-test set capabilities:raid_level="1+0" nova boot --flavor ironic-test --image test-image instance-1
磁盘擦除支持
磁盘擦除是 iLO 驱动程序支持的带内清理步骤。当代理 ramdisk 包含来自 proliantutils 版本 2.2.0 或更高版本的 Proliant Hardware Manager 时,它受支持。如果不支持擦除,则它将回退到 Ironic Python Agent 中可用的 erase_devices 实现。此清理步骤作为自动化清理的一部分执行,默认情况下已禁用。
此带内清理步骤需要从版本 2.60-19.0 开始的 ssacli 实用程序才能在物理磁盘上执行擦除。有关 ssacli 实用程序的更多信息,请参阅 ssacli 文档。
要创建带有 Proliant Hardware Manager 的代理 ramdisk,请在 DIB 中使用 proliant-tools 元素:
disk-image-create -o proliant-agent-ramdisk ironic-agent fedora proliant-tools
有关使用 DIB 中 proliant-tools 元素创建带有 proliant-tools 元素的代理 ramdisk 的更多信息,请参阅 proliant-tools。
实例镜像
所有 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 固件版本的“发行说明”以获取更多详细信息。 |