Ironic/Drivers/iLODrivers/liberty
目录
iLO驱动程序 (liberty 分支)
概述
iLO驱动程序能够利用HP 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许可证。
iscsi_ilo和agent_ilo可以与swift或本地Web服务器结合使用,以上传部署期间所需的临时镜像。要使用swift服务进行部署,请参阅配置Glance镜像服务。要进行无swift服务部署(独立Ironic环境),请参阅独立iLO驱动程序的Web服务器配置。
独立Ironic:意味着在没有其他OpenStack服务的情况下设置Ironic。但是,对于多conductor设置,最好让Neutron为DHCP服务器服务。
驱动程序之间的配置
启用 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 获取。
配置 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
先决条件
- proliantutils是一个Python包,其中包含用于管理HP ProLiant硬件的一组模块。在Ironic conductor节点上安装proliantutils模块。最低版本要求为2.1.5。
$ pip install "proliantutils>=2.1.5"
- ipmitool 命令必须存在于运行 ironic-conductor 的服务节点上。在大多数 Linux 发行版上,这作为 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通过加密管理网络从Swift端点发送和接收管理信息。管理信息和启动镜像将通过加密的管理网络通过iLO虚拟媒体进行检索。
已测试平台
此驱动程序应适用于具有iLO 4的HP ProLiant Gen8服务器及更高版本。
它已使用以下服务器进行了测试
- 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
特性
- 使用虚拟介质进行无 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。
- 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 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
特性
- 使用 Ironic Python Agent 进行无 PXE 部署。
- 远程控制台
- 硬件传感器
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- UEFI 启动
- UEFI 安全启动
- IPA在裸机节点上运行,并直接从Swift提取镜像。
- IPA部署的实例始终从本地磁盘启动。
- 支持部署整个磁盘镜像。
- 将管理信息与数据通道隔离。
- 支持带外硬件检查。
- 节点清理。
- 无Swift iLO驱动程序部署。
需求
- 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。
- 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 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
特性
- 自动检测当前启动模式。
- 如果 nova flavor 的 extra spec 请求 UEFI 启动模式,则自动设置所需的启动模式。
- 远程控制台
- 硬件传感器
- 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
- 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,否则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设置重置为默认值。默认情况下,优先级为10启用。此清理步骤仅支持Gen9及更高版本的服务器。
- 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'功能。例如:-
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在连接到ProLiant服务器的基于P220的smart array控制器时,由于错误“无法分配initrd”而无法启动 | 这是Fishman驱动程序在基于P220的smart array固件中的问题。已在Fishman固件上提交了该缺陷。驱动程序补丁将很快发布。 |
| 3 | iLO版本2.20 | 使用任何iLO驱动程序进行部署都可能在Gen9服务器上失败,出现conductor日志中的错误“无效的设备选择”,同时设置持久启动设备。此问题仅发生在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固件版本的“发行说明”以获取更多详细信息。 |