跳转到: 导航, 搜索

Ironic/Drivers/iLODrivers/Juno

iLO 驱动程序(Juno)

概述

iLO 驱动程序能够利用惠普 Proliant 服务器中 iLO 管理引擎的特性。iLO 驱动程序面向 HP Proliant Gen 8 系统及更高版本,这些系统具有 iLO 4 管理引擎

目前有3个iLO驱动程序

iscsi_iloagent_ilo 驱动程序通过使用 iLO 虚拟媒体启动裸机节点,提供安全性增强的无 PXE 部署。这些驱动程序通过管理通道发送管理信息,并将其与用于部署的数据通道分开。iscsi_ilo 驱动程序使用从 diskimage-builder 构建的部署 ramdisk,从 Ironic conductor 节点部署,并且始终执行网络启动。agent_ilo 驱动程序使用从 IPA 构建的部署 ramdisk,从裸机节点部署,并且始终执行本地启动。

pxe_ilo驱动程序使用PXE/iSCSI进行部署(就像普通的PXE驱动程序一样),但支持从nova自动设置请求的启动模式。此驱动程序不需要iLO Advanced许可证。

先决条件

  • proliantutils 是一个 Python 包,包含用于管理 HP Proliant 硬件的一组模块。在 Ironic conductor 节点上安装 proliantutils 模块。最低版本要求为 0.1.0。推荐版本为 2.1.5。


  $ pip install "proliantutils>=2.1.5"


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

驱动程序

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 虚拟媒体将管理信息与 Swift 端点之间进行传输,从而提供增强的安全性。管理信息和启动镜像将通过加密的管理网络进行检索。
已测试平台

此驱动程序应适用于具有iLO 4的HP Proliant Gen8服务器及更高版本。

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

  • ProLiant DL380e Gen8
  • ProLiant DL580e Gen8
  • ProLiant DL180 Gen9 UEFI
  • ProLiant DL380 Gen9 UEFI
  • ProLiant DL580 Gen9 UEFI
特性
  • 使用虚拟媒体进行无 PXE 部署。
  • 自动检测当前启动模式。
  • 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
  • 始终使用虚拟媒体从网络启动。
  • UEFI 启动支持
  • 如果 Swift 代理服务器具有 HTTPS 端点,则通过安全、加密的管理网络(虚拟媒体)传递管理信息。有关更多信息,请参阅 启用 Swift 中的 HTTPS。通过数据网络使用 iSCSI 进行配置,因此该驱动程序具有与相同性能的安全增强优势。它将管理信息与数据通道分开。
  • 远程控制台
  • 硬件传感器
  • 适用于资源受限的机器(内存较少)。
需求
  • iLO 4 Advanced License需要安装在iLO上才能启用虚拟媒体功能。
  • Swift 对象存储服务 - iLO 驱动程序使用 Swift 存储临时 FAT 镜像以及启动 ISO 镜像。
  • 具有 Swift 配置为其后端的 Glance 镜像服务 - 使用 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,并将其作为虚拟媒体 CDROM 附加到 iLO 上。
  • 驱动程序创建一个包含部署 ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift,其 swift-temp-url 作为虚拟媒体软盘附加到 iLO 上。
  • 驱动程序将节点设置为从 CDROM 一次性启动。
  • 驱动程序启动裸机节点。
  • 部署内核/ramdisk 在裸机节点上启动。ramdisk 通过 iSCSI 暴露本地磁盘,并请求 Ironic conductor 完成部署。
  • Ironic conductor 上的驱动程序将 glance 镜像写入裸机节点的磁盘。
  • 驱动程序将 Glance 部署镜像的启动内核/ramdisk 捆绑到 ISO 中,然后将其上传到 Swift。此 ISO 镜像将用于启动部署的实例。
  • 驱动程序重新启动节点。
  • 在第一次和后续重新启动时,iscsi_ilo 驱动程序将 Swift 中的此启动 ISO 镜像作为虚拟媒体 CDROM 附加,然后将 iLO 设置为从其启动。
配置和启用驱动程序

1. 使用 diskimage-builder 准备 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. 配置 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

可以通过运行以下命令检索这些详细信息

  $ 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)。

  • 如果未提供启动模式设置,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 能够选择具有适当启动模式的裸机节点,则可以这样做。适用于 ProLiant DL580 Gen8 和 Gen9 系统。
  • iscsi_ilo 驱动程序自动将启动模式从 BIOS 更改为 UEFI,如果 Nova 启动中的请求启动模式为 UEFI。但是,如果用户希望以传统模式部署节点,则需要在 DL580 Gen8 和 Gen9 服务器上预先配置启动模式为传统模式。
  • 目前,对于 UEFI 启动模式,不支持自动创建启动 ISO。部署镜像的启动 ISO 需要单独构建,并且 Glance 中的部署镜像的 boot_iso 属性应包含启动 ISO 的 Glance UUID。要构建启动 ISO,请在用 diskimage-builder 构建磁盘镜像时,在添加裸机元素之后添加 iso 元素
   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。有关 IPA 的更多信息,请参阅 https://wiki.openstack.org/wiki/Ironic-python-agent

目标用户
  • 不想在其数据中心使用 PXE/TFTP 协议的用户。
  • 如果 Swift 代理服务器具有 HTTPS 端点,则通过安全、加密的管理网络(虚拟媒体)传递管理信息。有关更多信息,请参阅 启用 Swift 中的 HTTPS。通过数据网络使用 iSCSI 进行配置,因此该驱动程序具有与相同性能的安全增强优势。它将管理信息与数据通道分开。


已测试平台

此驱动程序应适用于具有iLO 4的HP Proliant Gen8服务器及更高版本。

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

  • ProLiant DL380e Gen8
  • ProLiant DL180 Gen9


特性
  • 使用 Ironic Python Agent 进行无 PXE 部署。
  • 远程控制台
  • 硬件传感器
  • IPA在裸机节点上运行,并直接从Swift提取镜像。
  • IPA 部署的实例始终从本地磁盘启动。
  • 将管理信息与数据通道隔离。
需求
  • iLO 4 Advanced License需要安装在iLO上才能启用虚拟媒体功能。
  • Swift 对象存储服务 - iLO 驱动程序使用 Swift 存储临时 FAT 镜像以及启动 ISO 镜像。
  • 具有 Swift 配置为其后端的 Glance 镜像服务 - 使用 iscsi_ilo 驱动程序时,包含部署 ramdisk 的镜像将由 iLO 直接从 Swift 检索。
部署过程
  • 管理员为 agent_ilo 驱动程序配置 Proliant 裸机节点。配置的 Ironic 节点将在其 driver_info 中具有 ilo_deploy_iso 属性。这将包含包含代理的 ISO 部署代理镜像的 Glance UUID。
  • Ironic 收到请求,在裸机节点上部署 Glance 镜像。
  • 驱动程序关闭裸机节点。
  • 驱动程序生成部署代理镜像的 swift-temp-url,并将其作为虚拟媒体 CDROM 附加到 iLO 上。
  • 驱动程序创建一个包含代理 ramdisk 参数的小型 FAT32 镜像。此镜像上传到 Swift,其 swift-temp-url 作为虚拟媒体软盘附加到 iLO 上。
  • 驱动程序将节点设置为从 CDROM 一次性启动。
  • 驱动程序启动裸机节点。
  • 包含代理的部署内核/ramdisk 在裸机节点上启动。代理 ramdisk 与 Ironic conductor 通信,直接从 Swift 下载镜像,并将镜像写入节点的磁盘。
  • 驱动程序将节点设置为永久从磁盘启动,然后重新启动节点。
配置和启用驱动程序

1. 使用 [5]_ 中的 iso-image-create 脚本准备包含 agent 的 ISO 部署 Ironic Python Agent 镜像。以下命令将在以下目录 UPLOAD 中创建一个名为 ipa-ramdisk.iso 的文件:

   $ cd <directory-containing-ironic-python-agent>
   $ cd ./imagebuild/coreos
   $ make iso
   $ cd UPLOAD
   $ ls
   $ coreos_production_pxe_image-oem.cpio.gz  coreos_production_pxe.vmlinuz  ipa-coreos.iso


2. 将 IPA ramdisk 镜像上传到 Glance:

   glance image-create --name ipa-ramdisk.iso --disk-format iso --container-format bare < ipa-coreos.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

确保 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


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 节点上的任何未使用的端口均可使用。

注意:

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

pxe_ilo 驱动程序

概述

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

目标用户
  • 希望在其环境中对部署使用 PXE/iSCSI 或 iLO 中没有高级许可证的用户。
  • 不希望手动配置裸机节点上启动模式的用户。
已测试平台

此驱动程序应适用于具有 iLO 4 的 HP Proliant Gen8 服务器及更高版本。它已使用以下服务器进行测试

  • ProLiant DL380e Gen8
  • ProLiant DL380e Gen8
  • ProLiant DL580 Gen8
  • ProLiant DL180 Gen9


特性
  • 自动检测当前启动模式。
  • 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
需求

无。

配置和启用驱动程序

1. 使用 diskimage-builder 准备 ISO 部署 ramdisk 镜像。以下命令在当前工作目录中创建名为 deploy-ramdisk.kerneldeploy-ramdisk.initramfs 的文件:

   pip install diskimage-builder
   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。
  • client_port:(可选)如果在 iLO 上使用自定义端口,则用于 iLO 操作的端口。默认使用的端口是 443。
  • client_timeout:(可选)iLO 操作的超时时间。默认超时时间为 60 秒。
  • console_port:(可选)节点用于控制台访问的 UDP 端口。Ironic conductor 节点上的任何未使用的端口均可使用。
启动模式

pxe_ilo 驱动程序支持自动检测和设置启动模式(传统 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 能够选择具有适当启动模式的裸机节点,则可以这样做。适用于 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

已知问题

序号 固件版本 已知问题 解决方案
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"

参考文献