Ironic-Python-Agent

Ironic-Python-Agent

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

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

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

在Condutor端使用agent驱动,物理机端使用IPA,IPA经过暴露API给Condutor调用,则可完成相应功能。IPA启动时经过发送lookup()请求给Condutor获取UUID,至关于注册本身,而且每隔一段时间给Condutor发送心跳包进行链接。ide

1. 与conductor的交互工具

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

  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的关系spa

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异常。flash

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息