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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息