AMT PXE 驱动¶
https://blueprints.launchpad.net/ironic/+spec/amt-pxe-driver
此蓝图实现了一个新的驱动程序 – “PXEAndAMTDriver”,它支持在台式机上针对 AMT/vPro 系统的部署。
问题描述¶
目前 Ironic 还不支持在 AMT/vPro 系统中对台式机进行部署。此 BP 将扩展 Ironic 到台式机领域。
提议的变更¶
实现一个新的驱动程序 – “PXEAndAMTDriver” – 它使用 amt 控制具有 AMT 系统的节点的电源,并使用 pxe 将镜像传递到节点。以下是详细信息:
在 ironic/drivers/pxe.py 中添加一个新的类 PXEAndAMTDriver,继承自 base.BaseDriver
在 ironic/drivers/modules/amt/power.py 中添加一个新的类 AMTPower,继承自 base.PowerInterface
validate()- 验证节点驱动程序信息get_power_state()- 获取节点的电源状态set_power_state()- 设置节点的电源状态,例如开机/关机reboot()- 重启节点
在 ironic/drivers/modules/amt/management.py 中添加一个新的类 AMTMangement,继承自 base.ManagementInterface
validate()- 验证节点驱动程序信息ensure_next_boot_device()- 确保节点的下一个启动设备注意
AMT/vPro 仅接受第一个启动设备,如果我们将多个 _set_boot_device_order 请求发送到 AMT 节点,则会忽略其余设备。例如,当用户两次设置启动设备时,节点将使用第一个设备启动。因此,AMT 驱动程序仅将 amt_boot_device 保存到 DB 中,通过 set_boot_device(),并在设置节点电源之前通过 ensure_next_boot_device() 向节点发送请求。这样,AMT 驱动程序就可以像其他驱动程序一样支持用户多次设置启动设备。
set_boot_device()- 设置节点的启动设备。注意
由于 AMT/vPro 不支持像 BMC 那样在 BM 节点中持久设置启动设备,它仅为一次设置启动设备。因此,如果启动设备是持久的,AMT 驱动程序将在每次电源循环之间调用 ensure_next_boot_device()。AMT 驱动程序将 amt_boot_device/amt_boot_persistent 保存到 node.driver_internal_info 中,ensure_next_boot_device() 将读取该信息。
get_boot_device()- 获取节点的启动设备
添加一个条件,以启用 AMT 驱动程序在 pxe._continue_deploy 中调用 ensure_next_boot_device
注意
在 PXE 部署过程中,完成 dd 后,目标机器将通过 ramdisk 重启,而不是通过 Ironic。AMT 驱动程序必须在 _continue_deploy() 中再次调用 ensure_next_boot_device()。
备选方案¶
- 将 amt_boot_device 和 amt_boot_persistent 保存到
“driver_info” 但用户会注意到启动设备的更改,并且可能与他的输入不同。
“extra” 但不供 Ironic 内部使用。
数据模型影响¶
无
REST API 影响¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
需要的driver_info字段如下
amt_address: AMT 节点的 hostname 或 IP
amt_password: 用于连接到 AMT 节点的密码
amt_username: 用于连接到 AMT 节点的用户名
amt_protocol: 用于连接到 AMT 节点的协议 (可选)
以下参数添加到新创建的 ironic.conf 中的 [amt] 部分。
protocol: AMT 协议 (http/https) 的默认值。默认值为 http
max_retry: AMT 电源操作的默认重试次数。默认值为 3 次。
action_wait: 驱动程序等待重试的默认秒数。默认值为 10 秒。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
tan-lin-good
工作项¶
实现 PXEAndAMTDriver 类,继承自 base.BaseDriver。
实现 AMTPower 类,继承自 base.PowerInterface
实现 AMTManagement 类,继承自 base.managementInterface
依赖项¶
openwsman-python 包
注意
AMT 在最新版本 9.0 之后弃用了 SOAP (amttool) 支持。 http://en.wikipedia.org/wiki/Intel_AMT_versions “Intel AMT 9.0 — SOAP(EOI) 协议已移除。” 因此,AMT 现在仅支持 WS-MAN 协议 (openwsman)。使用 openwsman 的解决方案适用于 AMT 7.0/8.0/9.0。AMT 7.0 于 2010 年发布,因此大多数带有 vPro 的 PC 都涉及其中。
测试¶
将添加单元测试。
升级和向后兼容性¶
无
文档影响¶
将记录此驱动程序的用法。
参考资料¶
无