Ironic-Python-Agent

在PXE部署环境中,deploy模块是通过打开一个iSCSI设备,ironic-conductro将OS的镜像文件写到iSCSI的设备,所以deploy_ramdisk只是完成了iSCSI部署的工作,但开发者觉得既然已经把kernel和ramdisk传过去了,只做一个工作是不是太少了,而且还太缺乏灵活性了,所以就想在ramdisk里装一个Python Agent。 实际上就是多提供了一个Restful API,控制节点可以通过这个agent远程实现与物理机节点互动,而不仅仅使用dd命令。

Ironic Python Agent(简称IPA或者agent)是一个基于python的代理,用于处理ironic中裸机节点的一系列动作,比如检查、配置、清除和部署镜像。运行在ramdisk中,暴露出REST API给conductor。Ironic-Python-Agent可以在deploy模块直接访问硬件,提供以下功能:

  • 磁盘格式化
  • 磁盘分区
  • 安装OS( Bootloaders, OS)
  • 固件升级
  • raid配置

在Condutor端使用agent驱动,物理机端使用IPA,IPA通过暴露API给Condutor调用,则可完成相应功能。IPA启动时通过发送lookup()请求给Condutor获取UUID,相当于注册自己,并且每隔一段时间给Condutor发送心跳包进行连接。

1. 与conductor的交互

IPA使用lookup和hearteat机制与Ironic Conductor进行交互

  1. 启动时agent给Conductor的vendor_passthru lookup endpoint(地址为/v1/drivers/{driver}/vendor_passthru/lookup)发送一个硬件的profile
  2. 然后Ironic就可以得出该节点的uuid,在成功发现该节点之后,agent隔N秒发送心跳包给Conductor(hearteat地址为/v1/nodes/{node_ident}/vendor_passthru/heartbeat )
  3. conductor执行一系列动作,包括查询已经运行的命令的状态,

2. 与ramdisk、agent的关系

IPA是一个运行在ramdisk中python程序,当物理机注册时使用agent为前缀的驱动时,则会使用agent方式部署,即允许包含有IPA的ramdisk。

3. 硬件管理

硬件管理器(HardwareManager)是IPA中的一个概念,IPA通过重写硬件管理器来支持多种硬件平台。通过自定义 hardware managers 可以允许用户引入特定的硬件工具集、文件和清除步骤等等,比如可以引入 BIOS flashing utility and BIOS file,然后在cleaning step中重写BIOS版本。

修改硬件的方法按照优先顺序发送给每个管理器,管理器检查是否包含该方法,如果没有则抛出IncompatibleHardwareMethodError异常,IPA继续发送给下一个管理器,直到某个管理器包含该方法并且返回方法的结果,如果所有的管理器都没有改方法则抛出 HardwareManagerMethodNotFound异常。

最新文章

  1. vue-resource初体验
  2. jQuery-1.9.1源码分析系列(一)整体架构续
  3. 范式(Oracle)
  4. hdoj 2097 Sky数
  5. js重写原型对象
  6. JS实现购物车特效
  7. Promise原理与实现探究的一种思路
  8. tcping-安装
  9. 学习C++模板,初体验
  10. python如何输出文件的年月日
  11. linux下ping命令出现ping: sendto: Network is unreachable
  12. 如何在 Linux 中查看进程占用的端口号【转】
  13. JS中多维数组的深拷贝的多种实现方式
  14. AGC 016 F - Games on DAG(状压dp)
  15. 关于WARN Dispatcher:68 - Could not find action or result报错
  16. POJ 2367 Genealogical tree 拓扑排序入门题
  17. 3d打印机的软件系统组成部分
  18. bat中的“多线程”处理代码
  19. remote: ERROR: missing Change-Id in commit message footer
  20. 数据库~Mysql里的Explain说明

热门文章

  1. Spring boot 自动配置自定义配置文件
  2. Python学习之路——基础1
  3. 我是如何根据豆瓣api来理解Restful API设计的
  4. redis 过期回调通知
  5. base64位 解码图片
  6. Spring Boot Common application properties(转载)
  7. 用servlet设计OA管理系统时遇到问题
  8. 局域网内使用ssh连接两台计算机总结
  9. 【shopex】添加网页挂件widgets
  10. 【Python3】操作文件,目录和路径