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命令。

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異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM