跳转到: 导航, 搜索

Ironic/Drivers/iLODrivers/pike

目录

iLO驱动程序 (pike 分支)

概述

iLO驱动程序能够利用HPE ProLiant服务器中iLO管理引擎的特性。iLO驱动程序面向配备iLO 4管理引擎的HPE ProLiant Gen8和Gen9系统。从Pike版本开始,iLO驱动程序开始支持配备iLO 5管理引擎的ProLiant Gen10系统。iLO5符合Redfish API,因此硬件类型redfish也是这种硬件的一种选择,但它将缺乏iLO特定的特性。

要启用Gen10系统并获取Ironic中Gen10功能支持的详细信息,请查看此部分在 Ironic 中启用 ProLiant Gen10 系统

ProLiant硬件受ilo硬件类型和以下经典驱动程序的支持


   Note: All HPE ProLiant servers support reference hardware type ipmi. HPE ProLiant Gen10 servers also support hardware type redfish.

iscsi_iloagent_ilo驱动程序通过使用iLO虚拟媒体启动裸机节点,提供安全增强的无PXE部署。这些驱动程序通过管理通道发送管理信息,并将其与用于部署的数据通道分开。

iscsi_iloagent_ilo驱动程序使用从diskimage-builder构建的部署ramdisk。iscsi_ilo驱动程序从ironic conductor部署,并支持实例的网络启动和本地启动。agent_ilo从裸机节点部署,并支持实例的网络启动和本地启动。

pxe_ilo驱动程序使用PXE/iSCSI进行部署(就像普通的PXE驱动程序一样),并从ironic conductor部署。此外,它支持自动设置nova flavor的extra spec请求的启动模式。此驱动程序不需要iLO高级许可证。

硬件类型ilo和基于iLO的经典驱动程序支持HPE服务器的功能,例如

  • UEFI安全启动
  • 基于证书的iLO验证
  • 基于硬件的安全磁盘擦除,使用Smart Storage Administrator (SSA) CLI
  • 通过硬件检查进行服务器属性的带外发现
  • 带内RAID配置
  • 固件配置和安全固件更新

硬件接口

ilo硬件类型支持以下硬件接口

  • boot - ilo-virtual-mediailo-pxe。它们可以通过ironic.conf中的enabled_boot_interfaces选项启用
   [DEFAULT]
   enabled_hardware_types = ilo
   enabled_boot_interfaces = ilo-virtual-media,ilo-pxe
    Note: ilo-virtual-media is the default boot interface for ilo hardware type.
  • inspect - iloinspector。它们可以通过ironic.conf中的enabled_inspect_interfaces选项启用
   [DEFAULT]
   enabled_hardware_types = ilo
   enabled_inspect_interfaces = ilo,inspector
   Note: ilo is the default inspect interface for ilo hardware type. Ironic Inspector needs to be configured to use inspector as the inspect interface.
  • management - ilo。它可以通过ironic.conf中的enabled_management_interfaces选项启用
   [DEFAULT]
   enabled_hardware_types = ilo
   enabled_management_interfaces = ilo
  • power - ilo。它可以通过ironic.conf中的enabled_power_interfaces选项启用
   [DEFAULT]
   enabled_hardware_types = ilo
   enabled_power_interfaces = ilo

可以使用以下命令注册具有ilo硬件类型的ProLiant节点

   openstack baremetal node create --os-baremetal-api-version=1.31 \
           --driver ilo \
           --deploy-interface direct \
           --raid-interface agent \
           --driver-info ilo_address=<ilo-ip-address> \
           --driver-info ilo_username=<ilo-username> \
           --driver-info ilo_password=<ilo-password> \
           --driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>

请参阅启用驱动程序和硬件类型,以获取有关硬件类型的详细说明。

要启用与所有iLO经典驱动程序提供的相同功能集,请在ironic.conf中应用以下配置

   [DEFAULT]
   enabled_hardware_types = ilo
   enabled_boot_interfaces = ilo-virtual-media,ilo-pxe
   enabled_power_interfaces = ilo
   enabled_console_interfaces = ilo
   enabled_raid_interfaces = agent
   enabled_management_interfaces = ilo
   enabled_inspect_interfaces = ilo

可以使用以下命令注册具有与经典驱动程序相同功能集,但使用ilo硬件类型的节点

  • iscsi_ilo:
       openstack baremetal node create --os-baremetal-api-version=1.31 \
           --driver ilo \
           --deploy-interface iscsi \
           --boot-interface ilo-virtual-media \
           --driver-info ilo_address=<ilo-ip-address> \
           --driver-info ilo_username=<ilo-username> \
           --driver-info ilo_password=<ilo-password> \
           --driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>
  • pxe_ilo:
       openstack baremetal node create --os-baremetal-api-version=1.31 \
           --driver ilo \
           --deploy-interface iscsi \
           --boot-interface ilo-pxe \
           --driver-info ilo_address=<ilo-ip-address> \
           --driver-info ilo_username=<ilo-username> \
           --driver-info ilo_password=<ilo-password> \
           --driver-info deploy_kernel=<glance-uuid-of-pxe-deploy-kernel> \
           --driver-info deploy_ramdisk=<glance-uuid-of-deploy-ramdisk>
  • agent_ilo:
       openstack baremetal node create --os-baremetal-api-version=1.31 \
           --driver ilo \
           --deploy-interface direct \
           --boot-interface ilo-virtual-media \
           --driver-info ilo_address=<ilo-ip-address> \
           --driver-info ilo_username=<ilo-username> \
           --driver-info ilo_password=<ilo-password> \
           --driver-info ilo_deploy_iso=<glance-uuid-of-deploy-iso>

先决条件

  • proliantutils是一个python包,包含用于管理HPE ProLiant硬件的一组模块。在Ironic conductor节点上安装proliantutils模块。最低版本要求为2.4.0。


  $ pip install "proliantutils>=2.4.0"


  • ipmitool命令必须存在于运行ironic-conductor的服务节点上。在大多数Linux发行版上,它作为ipmitool软件包的一部分提供。源代码可在http://ipmitool.sourceforge.net/上找到。

iLO驱动程序的不同配置

配置 Glance 镜像服务

1. 使用其存储后端配置 Glance 镜像服务为 Swift。有关配置说明,请参阅[4]_。

2. 为 Glance 用户在 Swift 中设置临时 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_iloagent_ilo使用Swift容器来托管中间FAT镜像和启动ISO。如果变量设置为true,这些驱动程序使用本地Web服务器来托管中间文件。use_web_server_for_images的默认值为False

http_url:此变量的值将作为前缀添加到生成的中间文件中,以生成附加到虚拟媒体的URL。

http_root:这是conductor节点上Web服务器提供服务的磁盘路径位置。

为增强安全性,强烈建议使用HTTPS而不是HTTP Web服务器配置。如果启用了HTTPS Web服务器,iscsi_iloagent_ilo将通过加密通道发送实例的configdrive。

启用 Swift 中的 HTTPS

iLO驱动程序iscsi_iloagent_ilo使用Swift存储启动镜像和管理信息(用于Ironic conductor配置裸机硬件)。默认情况下,Swift中未启用HTTPS。HTTPS需要加密Swift与Ironic conductor之间以及Swift与裸机(通过虚拟媒体)之间的所有通信。可以通过以下方式之一启用它

     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_iloiscsi_ilo


必须创建镜像(参见:ref:`BuildingDibBasedDeployRamdisk`)并使其可通过 HTTP(S) URL 下载。本文档不描述 HTTP(S) 服务器的安装或配置,但是,

  • 如果使用[i]PXE,则网络引导加载程序必须能够启动请求以下载内核和 ramdisk 镜像,网址为“http_url”,并且ironic-conductor必须能够将文件写入“http_root”,这些文件将从“http_url”提供服务。
  • 部署代理必须能够启动请求从“http_url”下载实例镜像。

独立 iLO 驱动程序的必要条件

  • 需要安装iLO 4 高级许可证在 iLO 上以启用虚拟媒体功能。
  • Conductor上的本地Web服务器 - ilo驱动程序使用conductor节点上的Web服务器来存储临时FAT镜像以及启动ISO镜像。需要在每个conductor节点上进行配置。
  • HTTP(s) Web服务器 - 使用ilo驱动程序时,包含代理/部署ramdisk的镜像直接从HTTP(s) Web服务器由iLO检索。此Web服务器不必位于conductor节点上。有关更多信息,请参阅`基于HTTP(s)的部署`__。
  • 请参阅`独立 iLO 驱动程序的 Web 服务器配置`_

配置独立 iLO 驱动程序

1. 在/etc/ironic/ironic.conf[deploy]部分中添加http_urlhttp_root。例如

   http_url = https://10.10.1.10:8080/httpboot/
   http_root = /opt/stack/data/ironic/httpboot/

这些确定Web服务器如何在conductor上提供镜像。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驱动程序时,包含代理/部署ramdisk的镜像直接从Swift由iLO检索。

驱动程序

iscsi_ilo 驱动程序

概述

iscsi_ilo驱动程序被引入作为HP ProLiant服务器的pxe_ipmitoolpxe_ipminative驱动程序的替代方案。iscsi_ilo使用iLO中的虚拟媒体功能来启动裸机节点,而不是使用PXE或iPXE。

目标用户
  • 不想在数据中心使用PXE/TFTP协议的用户。
  • 对PXE驱动程序的安全问题有疑虑,并希望拥有安全增强的无PXE部署机制的用户 - PXE驱动程序以明文形式将管理信息传递到裸机节点。但是,如果Swift代理服务器具有HTTPS端点(有关更多信息,请参见在 Swift 中启用 HTTPS),则iscsi_ilo驱动程序通过通过HTTPS加密的通道传递管理信息来提供增强的安全性。管理信息和启动镜像将通过加密的管理网络通过iLO虚拟媒体检索。它将管理信息与数据通道分开。
测试平台

此驱动程序应适用于配备iLO 3的HPE ProLiant Gen7服务器、配备iLO 4的Gen8和Gen9服务器以及配备iLO 5的Gen10服务器。

它已使用以下服务器进行测试

  • 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
  • ProLiant DL360 Gen10
特性
  • 无PXE部署,使用虚拟媒体。
  • 自动检测当前启动模式。
  • 如果nova flavor的extra spec请求了UEFI启动模式,则自动设置所需的启动模式。
  • 支持从虚拟媒体启动实例以及从磁盘本地启动。默认情况下是从虚拟媒体启动。
  • UEFI启动
  • UEFI安全启动
  • 通过安全加密的管理网络(虚拟媒体)传递管理信息,如果Swift代理服务器具有HTTPS端点。有关更多信息,请参见在 Swift 中启用 HTTPS。通过iSCSI通过数据网络进行配置,因此该驱动程序具有与相同性能的安全增强。它将管理信息与数据通道分开。
  • 远程控制台(基于IPMI)
  • HW传感器
  • 适用于资源受限的机器(内存较少)。
  • 本地启动(BIOS 和 UEFI)
  • 支持部署整个磁盘镜像。
  • 支持带外硬件检查。
  • 节点清理。
  • 独立 iLO 驱动程序。
需求
  • iLO 4iLO 5 高级许可证需要安装在 iLO 上才能启用虚拟媒体启动功能。
  • Swift 对象存储服务或 Conductor 上的 HTTP(s) Web 服务器 - iLO 驱动程序使用 Conductor 节点上的 Swift/HTTP(s) Web 服务器来存储临时 FAT 镜像以及启动 ISO 镜像。
  • 配置了 Swift 作为其后端的 Glance 镜像服务或 HTTP(s) Web 服务器 - 使用 iscsi_ilo 驱动程序时,iLO 会直接从 Swift/HTTP(s) Web 服务器检索包含部署 ramdisk 的镜像。
部署流程
  • 管理员为 iscsi_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含 Glance UUID 或部署 ramdisk ISO 镜像的 HTTP(s) 位置。
  • Ironic 收到请求,要在裸机节点上部署 Glance/HTTP(s) 镜像。
  • iscsi_ilo 驱动程序关闭裸机节点。
  • 如果 ilo_deploy_iso 是 Glance UUID,则驱动程序为部署 ramdisk 镜像生成 swift-temp-url,并将其作为 Virtual Media CDROM 附加到 iLO。如果 ilo_deploy_iso 是 HTTP(s) URL,则驱动程序将其直接作为 Virtual Media CDROM 附加到 iLO。
  • 驱动程序创建一个包含部署 ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift/HTTP(s) Web 服务器,其 swift-temp-url/HTTP(s) URL 作为 Virtual Media Floppy 附加到 iLO。
  • 驱动程序设置节点从 CDROM 一次性启动。
  • 驱动程序打开裸机节点。
  • 部署内核/ramdisk 在裸机节点上启动。ramdisk 通过 iSCSI 暴露本地磁盘,并请求 Ironic Conductor 完成部署。
  • Ironic Conductor 上的驱动程序将 glance/HTTP(s) 镜像写入裸机节点的磁盘。
  • 如果请求了本地启动,Ironic Conductor 会要求部署 ramdisk 安装启动加载程序。
  • 如果为网络启动(默认),驱动程序将部署镜像的启动内核/ramdisk 捆绑到 ISO 中,然后将其上传到 Swift/HTTP(s) Web 服务器。此 ISO 镜像将用于启动部署的实例。
  • 驱动程序重新启动节点。
  • 对于网络启动,在第一次和后续重新启动时,iscsi_ilo 驱动程序将 Swift/HTTP(s) 中的此启动 ISO 镜像作为 Virtual Media 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.kerneldeploy-ramdisk.initramfsdeploy-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.confenabled_drivers 列表。

   enabled_drivers = fake,pxe_ssh,pxe_ipmitool,iscsi_ilo

如果使用 HTTP(s) Web 服务器

4. 在 /etc/ironic/ironic.conf[deploy] 部分中添加 http_urlhttp_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:部署 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)”。在将节点注册到裸机服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
  • 如果在节点的 driver_info 中未提供 ca_fileclient_portclient_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:biosboot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。iscsi_ilo 驱动程序将随后以指定的启动模式部署和配置实例。

例如,要使 Proliant 裸机节点始终以 UEFI 模式启动,请运行以下命令:

  ironic node-update <node-id> add properties/capabilities='boot_mode:uefi'

注意:

  • 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则这样做。
  • iscsi_ilo 驱动程序会自动将启动模式从 BIOS 更改为 UEFI,如果 nova boot 中请求的启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 DL580 Gen8(仅限 ProLiant DL580)和 Gen9 服务器上预配置启动模式为传统模式。
  • UEFI 启动模式的自动启动 ISO 创建已在 Kilo 中启用。还支持手动创建 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_ipmitoolagent_ipminative 驱动程序的替代方案推出。agent_ilo 驱动程序使用 HP Proliant 裸机服务器中的虚拟媒体功能来启动裸机节点上的 Ironic Python Agent (IPA),而不是使用 PXE。

目标用户
  • 不想在数据中心使用PXE/TFTP协议的用户。
测试平台

此驱动程序应适用于配备iLO 3的HPE ProLiant Gen7服务器、配备iLO 4的Gen8和Gen9服务器以及配备iLO 5的Gen10服务器。

它已使用以下服务器进行测试

  • 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
  • ProLiant DL360 Gen10
  • Synergy 480 Gen9
特性
  • 使用 Ironic Python Agent 通过虚拟媒体进行无 PXE 部署。
  • 远程控制台(基于IPMI)
  • HW传感器
  • 自动检测当前启动模式。
  • 如果nova flavor的extra spec请求了UEFI启动模式,则自动设置所需的启动模式。
  • UEFI启动
  • UEFI安全启动
  • 支持从虚拟媒体启动实例以及从磁盘本地启动。
  • 支持部署整个磁盘镜像和分区镜像。
  • 本地启动(BIOS 和 UEFI)
  • 将管理信息与数据通道隔离。
  • 支持带外硬件检查。
  • 节点清理。
  • 独立 iLO 驱动程序。
  • 支持为配置为 VLAN 类型网络的节点实例进行租户网络隔离。
需求
  • iLO 4iLO 5 高级许可证需要安装在 iLO 上才能启用虚拟媒体启动功能。
  • Swift 对象存储服务或 Conductor 上的 HTTP(s) Web 服务器 - iLO 驱动程序使用 Conductor 节点上的 Swift/HTTP(s) Web 服务器来存储临时 FAT 镜像以及启动 ISO 镜像。
  • 配置了 Swift 作为其后端的 Glance 镜像服务或 HTTP(s) Web 服务器 - 使用 agent_ilo 驱动程序时,iLO 会直接从 Swift/HTTP(s) Web 服务器检索包含 agent 的镜像。
部署流程
  • 管理员为 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,则驱动程序为部署 agent 镜像生成 swift-temp-url,并将其作为 Virtual Media CDROM 附加到 iLO。如果 ilo_deploy_iso 是 HTTP(s) URL,则驱动程序将其直接作为 Virtual Media CDROM 附加到 iLO。
  • 驱动程序创建一个包含 agent ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift/HTTP(s),其 swift-temp-url/HTTP(s) URL 作为 Virtual Media Floppy 附加到 iLO。
  • 驱动程序设置节点从 CDROM 一次性启动。
  • 驱动程序打开裸机节点。
  • 包含 agent 的部署内核/ramdisk 在裸机节点上启动。agent ramdisk 与 Ironic Conductor 通信,直接从 Swift/HTTP(s) 下载镜像,并将镜像写入节点上选择的磁盘。
  • 驱动程序设置节点永久从磁盘启动,然后重新启动节点。
配置和启用驱动程序

1. 准备一个包含 agent 的 ISO 部署 Ironic Python Agent 镜像 [5]_。这可以通过使用 agent 中找到的 iso-image-create 脚本来完成。以下命令将在以下目录 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.confenabled_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 的部署 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)”。在将节点注册到裸机服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
  • 如果在节点的 driver_info 中未提供 ca_fileclient_portclient_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:biosboot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。然后 agent_ilo 驱动程序将以适当的启动模式部署和配置实例。

例如,要使 Proliant 裸机节点以 UEFI 模式启动,请运行以下命令:

  ironic node-update <node-id> add properties/capabilities='boot_mode:uefi'

注意:

  • 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则这样做。
  • agent_ilo 驱动程序会自动将启动模式从 BIOS 更改为 UEFI,如果 nova boot 中请求的启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 DL580 Gen8(仅限 ProLiant DL580)和 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

pxe_ilo 驱动程序

概述

pxe_ilo 驱动程序使用 PXE/iSCSI(就像 pxe_ipmitool 驱动程序一样)来部署镜像,并使用 iLO 来对裸机节点执行所有管理操作(而不是使用 IPMI)。

目标用户
  • 希望在其环境中对部署使用 PXE/iSCSI 或 iLO 中没有高级许可证的用户。
  • 不希望手动在裸机节点上配置启动模式和启动设备的用户。
  • 希望使用 iLO 驱动程序增值功能(例如启动模式管理、带外节点清理和硬件内省)的用户。
测试平台

此驱动程序应适用于配备iLO 3的HPE ProLiant Gen7服务器、配备iLO 4的Gen8和Gen9服务器以及配备iLO 5的Gen10服务器。

它已使用以下服务器进行测试

  • 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
  • ProLiant DL360 Gen10
特性
  • 自动检测当前启动模式。
  • 如果nova flavor的extra spec请求了UEFI启动模式,则自动设置所需的启动模式。
  • 远程控制台(基于IPMI)
  • HW传感器
  • UEFI启动
  • UEFI安全启动
  • 本地启动(BIOS 和 UEFI)
  • 支持部署整个磁盘镜像和分区镜像。
  • 支持从 PXE 启动实例以及从磁盘本地启动。
  • 将管理信息与数据通道隔离。
  • 支持带外硬件检查。
  • 节点清理
  • 独立 iLO 驱动程序。
需求

无。

配置和启用驱动程序

1. 从 diskimage-builder [3] 准备一个 ISO 部署 ramdisk 镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kerneldeploy-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.confenabled_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)”。在将节点注册到裸机服务时,使用与 ilo_address 相同的值,以避免与主机名不匹配相关的 SSL 证书验证错误。
  • 如果在节点的 driver_info 中未提供 ca_fileclient_portclient_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:biosboot_mode:uefi 添加到 Ironic 节点 properties 字段中的 capabilities 属性来提供特定启动模式的要求。然后 pxe_ilo 驱动程序将以适当的启动模式部署和配置实例:
  ironic node-update <NODE-ID> add properties/capabilities='boot_mode:uefi'

注意:

  • 我们建议在支持 UEFI 和传统模式的系统上设置 boot_mode 属性,如果用户希望在 Nova 中选择具有适当启动模式的裸机节点,则这样做。
  • 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


测试平台:此功能在 HP Proliant Gen9 服务器及更高版本上可用,并具有 iLO 4。已使用以下服务器进行测试

  • ProLiant DL360 Gen9 UEFI
  • ProLiant DL380 Gen9 UEFI


可以通过在 Ironic 节点的 properties 字段内的 capabilities 参数中添加 secure_boot 参数来配置 UEFI 安全启动模式。

secure_boot 是一个布尔参数,其值为 truefalse

要在节点上启用 secure_boot,请将其添加到 capabilities 中,如下所示:

 ironic node-update <node-uuid> add properties/capabilities='secure_boot:true'

或者,也可以使用硬件检查来填充安全启动功能。

可以将 secure_boot 设置为 true 的节点通过将 extra_spec 添加到 Nova flavor 来请求:

 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-signedfedoradiskimage-builder_ 构建签名的 ubuntu 部署 iso 和用户镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kerneldeploy-ramdisk.initramfsdeploy-ramdisk.iso 的文件

   pip install "diskimage-builder"
   ramdisk-image-create -o deploy-ramdisk ubuntu-signed deploy-ironic iso

以下命令在当前工作目录中创建名为 cloud-image-boot.isocloud-image.initrdcloud-image.vmlinuzcloud-image.qcow2 的文件

   disk-image-create -o cloud-image ubuntu-signed baremetal iso

注意:

  • 在实例镜像启动时启用 UEFI 安全启动。裸机部署以 UEFI 启动模式进行。
  • 在 UEFI 安全启动中,数字签名的引导加载程序应能够验证启动过程中的内核数字签名。这要求引导加载程序包含内核的数字签名。对于 iscsi_ilo 驱动程序,建议用户镜像的 boot_iso 属性包含 boot ISO 的 Glance UUID。如果用户镜像中的 boot_iso 属性未更新,它将使用部署 iso 中的引导加载程序创建 boot_iso。只有当引导加载程序已签名并且可以验证用户镜像内核的数字签名时,此 boot_iso 才能在 UEFI 安全启动环境中启动用户镜像。
  • 对于 pxe_ilo 驱动程序,在部署分区镜像的情况下,请确保在部署期间使用的已签名 grub2 引导加载程序可以验证实例分区镜像中的内核数字签名。如果已签名的 grub2 无法验证实例分区镜像中的内核,则启动将失败。

硬件检查

以下驱动程序支持硬件检查

  • 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 release 版本 >= 2.2.0 中可用。
    • iLO 必须使用 SNMPv3 身份验证详细信息进行更新。请参阅 `http://h20566.www2.hpe.com/hpsc/doc/public/display?docId=c03334051' 中的 `SNMPv3 身份验证` 部分,了解如何在 iLO 上设置身份验证详细信息。以下参数是 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_iloagent_ilo 使用 Swift 存储引导镜像和管理信息。默认情况下,Swift 中未启用 HTTPS。HTTPS 需要加密 Ironic Conductor 和 Swift 代理服务器之间的所有通信,从而防止网络数据包被窃听。可以通过以下方式之一启用它

   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_change_password”,则重置 iLO 密码。默认情况下,优先级为 30 启用。
  • clear_secure_boot_keys:清除所有安全启动密钥。此步骤仅在 Gen9 及更高版本的服务器上受支持。默认情况下,此步骤已禁用。
  • reset_ilo:重置 iLO。默认情况下,此步骤已禁用。


此外,agent_ilo 驱动程序支持带内自动清理操作 erase_devices。它在 HPE Proliant 服务器上执行 Sanitize Erase。如果使用从 Ocata release 创建的 diskimage-builder 创建 ramdisk,则此步骤仅支持 Proliant 服务器上的清理磁盘擦除,否则它将执行 Ironic Python Agent 中可用的 erase_devices 实现。默认情况下,此步骤已禁用。有关更多信息,请参阅 Sanitize Disk Erase Support

您还需要配置 清理网络。要禁用或更改特定自动清理步骤的优先级,需要更新 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 状态。手动清理只能在 API 版本 1.15 及更高版本中提供 REST API 请求来启动时执行。因此,从命令行您需要执行

   ironic --ironic-api-version 1.15 node-set-provision-state --clean-steps input_manual_clean_steps.json <node-uuid> clean

目前,支持的 iLO 手动清理操作包括

  • activate_license:
激活 iLO Advanced 许可证。这是一个与管理界面关联的带外手动清理步骤。请注意,由于它们需要此类型的先进许可证才能使用虚拟媒体进行引导以开始清理操作,因此无法使用基于虚拟媒体的驱动程序(如 iscsi_ilo 和 agent_ilo)执行此操作。虚拟媒体是一项高级功能。如果已经激活了高级许可证,并且用户想要覆盖当前的许可证密钥,例如在交付带有灵活数量套件的多服务器激活密钥或完成激活密钥协议 (AKA) 之后,则仍然可以使用这些驱动程序来执行此清理步骤。
有关用户指导,请参阅 激活 iLO Advanced 许可证作为手动清理步骤
   Note: This feature is not applicable to Synergy 480 Gen9 machines because the Synergy machines are installed with the Advanced iLO license by default.
  • update_firmware:
更新设备的固件。也是与管理界面关联的带外步骤。支持固件更新的设备包括:ilocpldpower_picbioschassis。某些设备的固件无法通过此方法更新,例如:存储控制器、主机总线适配器、磁盘驱动器固件、网络接口和 Onboard Administrator (OA)。请参阅下表了解上述组件的常用说明。
装置 描述
ilo HPE ProLiant 服务器的 BMC
cpld 系统可编程逻辑设备
power_pic 电源管理控制器
bios HPE ProLiant 系统 ROM
chassis 系统底盘设备
有关用户指导,请参阅 启动固件更新作为手动清理步骤

有关节点手动清理的更多信息,请参阅 手动清理

激活 iLO Advanced 许可证作为手动清理步骤

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 方案是:filehttphttpsswift
注意:此功能假定在使用 file url 方案时,文件路径位于控制节点的 conductor 上。
注意:swift url 方案假定 service 项目的 swift 帐户。service 项目(租户)是在 Keystone 系统中创建的特殊项目,专供核心 OpenStack 服务使用。当 Ironic 使用 Swift 进行存储时,帐户通常是 service,容器通常是 ironic,并且 ilo 驱动程序为其自身目的使用名为 ironic_ilo_container 的容器。
注意:在使用扩展名为 .rpm 的固件文件时,请确保 conductor 上存在 rpm2cpiocpio 命令,因为它们用于从软件包中提取固件镜像。
  • 可以更新的固件组件包括:ilocpldpower_picbioschassis
  • 固件镜像将按照操作员给定的顺序更新。如果在列表中提供的任何固件镜像处理过程中出现任何错误,则都不会发生任何固件更新。处理错误可能发生在镜像下载、镜像校验和验证或镜像提取期间。逻辑是处理每个固件文件,只有在所有文件都成功处理后才在设备上更新它们。如果在更新(上传和刷新)过程中,更新失败,则将中止列表中剩余的更新(如果有)。但是,建议对失败进行分类和修复,并重新尝试手动清理步骤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 文档

   Note: Inband clean step for RAID configuration and Disk Erase on HPE P/E-Class SR Gen10 controllers and above will require ssacli version to be ssacli-3.10-3.0 and above.

要创建包含 Proliant Hardware Manager 的代理 ramdisk,请在 DIB 中使用 proliant-tools 元素:

   disk-image-create -o proliant-agent-ramdisk ironic-agent fedora proliant-tools

有关使用 DIB 中 proliant-tools 元素创建代理 ramdisk 的更多信息,请参阅 proliant-tools

在 Ironic 中启用 ProLiant Gen10 系统

HPE Gen10 服务器 提供新的计算体验。Gen10 服务器是基础设施现代化的关键,可以加速混合世界中传统 IT、公有和私有云的业务洞察力。

这些服务器符合 Redfish APIproliantutils 库使用 Redfish 协议与此硬件通信。与 Gen10 服务器通信所需的 proliantutils 库的最低版本是 2.4.0。所有 iLO 驱动程序及其功能都受此硬件的支持。由于 Gen10 系统符合 Redfish 标准,因此参考硬件类型 redfish 也适用于 Gen10 系统,但它将缺乏 iLO 特定的功能。

   Note: The S-Class software RAID is not supported by Linux in Gen10. Therefore, while provisioning a Gen10 node, make sure the controller is set to AHCI mode.

有关 Gen10 系统中已知问题的列表,请参阅 Gen10 已知问题 部分。

实例镜像

所有 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”功能。从 nova,可以使用 ComputeCapabilitesFilter 请求特定的启动模式。例如:-

 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”,如果连接到 ProLiant 服务器的基于 P220 的智能阵列控制器。 这是基于 P220 的智能阵列的 Fishman 固件中的驱动程序问题。已在 Fishman 固件上提交了该缺陷。驱动程序补丁将很快发布。
3 iLO 版本 2.20 使用任何 iLO 驱动程序进行部署都可能在 Gen9 服务器上失败,在 conductor 日志中出现错误“Invalid Device Choice”,同时设置持久启动设备。只有当 Gen9 服务器正在运行 iLO 固件版本 2.20 时才会发生此问题 这是 iLO 固件中的问题,如果在 UEFI 启动模式下使用 RIBCL 更新 Gen9 服务器上的持久启动设备,则会显示上述错误消息。可以通过以下方法之一解决此问题:-

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 固件版本的“发行说明”以获取更多详细信息。
Gen10 已知问题和解决方法(如果可用)
序号 组件(带有固件版本) 已知问题 解决方法
1 --- --- ---
2 --- --- ---