Heat是OpenStack里面的原生服務,大部分的發行版都會提供這個服務,使用起來更方便。同時通過OS::Heat::SoftwareConfig和OS::Heat::SoftwareDeployment等多個資源類型的組合,可以輕易的實現一套應用部署流程。在虛擬機中的Agents會定時與Heat通信,發送腳本執行結果,方便Heat進行流程控制。有了這一套機制,Heat便擁有了對軟件生命周期管理的能力。
當然這一套框架也有一些需要克服的不足:
剛才說要使用heat的這套框架,需要先創建出一個包含了os--config agents的鏡像。通常我們使用diskimage-builder這個工具,下面的例子是創建出一個帶os--config agents的Fedora鏡像:
$ git clone https://git.openstack.org/openstack/diskimage-builder.git $ git clone https://git.openstack.org/openstack/tripleo-image-elements.git $ git clone https://git.openstack.org/openstack/heat-templates.git $ export ELEMENTS_PATH=tripleo-image-elements/elements:heat-templates/hot/software-config/elements
$ disk-image-create vm fedora \ $ os-collect-config os-refresh-config os-apply-config \ $ heat-config heat-config-script \ $ -o fedora-software-config.qcow2
要通過Heat來部署應用,至少三個資源會被使用到:
1. Heat stack-create 觸發部署流程,Heat分析并存儲template中的數據,SoftwareConfig中的腳本會放到Heat數據庫中。
2. Heat Engine去請求Nova創建相應的資源,并且在虛擬機的metadata中寫入一些Heat的信息,包括Heat的API和認證信息。
3. Nova通知compute節點創建虛擬機。
4. 虛擬機次啟動之后會調用Cloud-init,cloudinit與nova metadata service通信,獲取metadata信息。
5. 然后通過不同的module去設置這些相應的配置,例如hostname,ssh等等。
6. 然后啟動os-collect-config進程,它會讀取/etc/os-collect-config.conf這個配置文件,里面由cloud-init配置了Heat的一些信息。讀取完配置文件之后會與Heat API,以獲取軟件部署腳本。
7. 然后os-collect-config會調用os-refresh-config去對比新獲取的腳本是否與之前的腳本不同。
8. 如果獲取的腳本有更新,則調用os-apply-config去執行。
9. 執行結束之后通知heat腳本執行結果。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。