為敘述原理方便,假設前提條件為使用pxe_ipmitool驅動來操作物理機。Ironic的運行原理及流程如圖7-2所示。Ironic通過IPMI來控制物理主機電源,使用PXE來引導物理主機啟動,物理主機第一步會通過PXE,從TFTP服務器上加載和硬件相關的kernel和ramdisk,這是一個臨時的操作系統,使用Ironic裡面的術語稱為deploy image,加載運行後其內置的腳本會自動將裸機硬盤通過iSCSI target的方式暴露出來。隨後內置腳本發一個HTTP請求,通知Ironic-Conductor裸機端已完成目標暴露,conductor作為initiator掛載此目標,然後將用戶的鏡像寫入剛掛載的磁盤上。隨後修改裸機的BootLoader改為從硬盤啟動系統。Ironic-conductor通過IPMI重新啟動物理主機。修改數據庫中的實例狀態為可用,從而完成裸機系統的部署。這個步驟關鍵核心是將用戶鏡像寫入硬盤,類似於ghost機制完成系統複製。
以上只是簡述原理,有幾個關鍵點沒有提及,但是對於Ironic成功運行來說,非常重要。
1)tftp-server、IPMI等第三方包的配置和部署。
2)專為裸機部署創建的Flavor,Nova通過Flavor來判斷和調度是否是裸機部署。
3)專為裸機定制的鏡像,需要預先上傳到Glance。這個鏡像是和具體硬件相關的,需要每一種類型的硬件單獨創建,社區一般用diskimage-builder這個工具來生成。有兩類鏡像,第一類是部署時的臨時鏡像;第二類是用戶真正需要部署的系統,具體如下:
·bm-deploy-kernel
·bm-deploy-ramdisk
·user-image
·user-image-vmlinuz
·user-image-initrd
4)需要管理員事先將裸機信息登記在Ironic裡,包括IPMI的用戶名、密碼,以及硬件相關信息等。
圖7-2 Ironic的運行原理及流程