本發(fā)明涉及一種構(gòu)建方法,特別是涉及一種openstack組件容器化的構(gòu)建方法。
背景技術(shù):
由于云計(jì)算技術(shù)的興起,帶動(dòng)了云計(jì)算平臺(tái)openstack(開源的云計(jì)算管理平臺(tái)項(xiàng)目)的飛速發(fā)展,使之成為了目前非常流行的開源云管理平臺(tái)。openstack平臺(tái)每半年更新一個(gè)版本,幾百家公司,幾萬(wàn)人加入其中為其貢獻(xiàn)代碼,使之功能越來越強(qiáng)大,支持的組件越來越多。隨之而來的問題就是openstack配置復(fù)雜、組件與組件之間緊密聯(lián)系、組件與操作系統(tǒng)緊耦合,版本與版本之間變動(dòng)大,沒法平滑過渡升級(jí)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種openstack組件容器化的構(gòu)建方法,其能夠降低操作系統(tǒng)升級(jí)對(duì)openstack組件工作影響,操作簡(jiǎn)單,實(shí)用方便。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:一種openstack組件容器化的構(gòu)建方法,其特征在于,其包括以下步驟:
步驟一,openstack組件docker鏡像生成;
步驟二,部署節(jié)點(diǎn)運(yùn)行環(huán)境配置;
步驟三,部署節(jié)點(diǎn)本地registry服務(wù)配置;
步驟四,導(dǎo)入openstack組件docker鏡像,該步驟通過docker client端命令行工具和導(dǎo)入腳本完成;
步驟五,推送openstack組件docker鏡像到本地registry保存,該步驟通過docker client端命令行工具和自動(dòng)化腳本完成;
步驟六,將openstack組件部署到服務(wù)器;
步驟七,升級(jí)已經(jīng)部署的openstack組件。
優(yōu)選地,所述步驟一包括以下步驟:
步驟十,編寫Jinja2模板文件;
步驟十一,ansible工具通過Jinja2模板文件和生成docker鏡像所需配置文件,生成Dockerfile文件;
步驟十二,ansible工具通過docker.py模塊調(diào)用docker執(zhí)行Dockerfile文件指定的一系列命令和參數(shù)進(jìn)行openstack組件鏡像構(gòu)建;
步驟十三,openstack組件鏡像構(gòu)建完成,根據(jù)配置文件將鏡像推送到指定的Registry服務(wù)器保存或者將生成的openstack組件鏡像保存為歸檔壓縮文件。
優(yōu)選地,所述步驟二包括以下步驟:
步驟二十,部署節(jié)點(diǎn)和被部署節(jié)點(diǎn)之間通信是通過ssh協(xié)議,首先配置主機(jī)之間ssh無(wú)密碼登錄;
步驟二十一,配置主機(jī)名和ip地址之間映射關(guān)系;
步驟二十二,配置ntp server服務(wù);
步驟二十三,安裝部署模塊和相關(guān)依賴包。
優(yōu)選地,所述步驟三包括以下步驟:
步驟三十,registry軟件是以docker鏡像方式發(fā)布,配置registry首先配置docker deamon;
步驟三十一,docker deamon運(yùn)行正常,導(dǎo)入registry docker鏡像;
步驟三十二,運(yùn)行registry容器實(shí)例。
優(yōu)選地,所述步驟六包括以下步驟:
步驟六十,編寫ansible playbook容器部署代碼;
步驟六十一,用戶在部署節(jié)點(diǎn)上執(zhí)行部署命令,該命令調(diào)用自動(dòng)化運(yùn)維工具ansible playbook部署代碼,部署代碼通過docker.py調(diào)用docker運(yùn)行openstack組件容器實(shí)例。
優(yōu)選地,所述步驟七包括以下步驟:
步驟七十,用戶準(zhǔn)備升級(jí)使用的openstack組件docker鏡像,更新到原來部署節(jié)點(diǎn);
步驟七十一,修改全局配置文件openstack組件docker鏡像tag參數(shù)為新鏡像tag;
步驟七十二,用戶在部署節(jié)點(diǎn)上執(zhí)行升級(jí)命令,該命令調(diào)用自動(dòng)化運(yùn)維工具ansible playbook升級(jí)代碼,升級(jí)代碼通過docker.py調(diào)用docker完成openstack組件鏡像比較,如果鏡像與原來鏡像不同,則刪除原來運(yùn)行的容器實(shí)例,使用指定的新鏡像創(chuàng)建容器實(shí)例,完成組件升級(jí)。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能夠解決openstack組件與操作系統(tǒng)之間的緊耦合問題,操作系統(tǒng)升級(jí)更新軟件包對(duì)openstack組件工作影響降到了最低可控范圍;解決了openstack組件之間共用庫(kù)文件,一個(gè)組件改變其中文件影響其他組件問題;解決了openstack版本升級(jí)問題,由一個(gè)版本升級(jí)到另一個(gè)版本變的更簡(jiǎn)單;對(duì)于openstack問題定位也是很好的改進(jìn),問題定位范圍縮小到一個(gè)容器內(nèi);對(duì)于openstack組件部署時(shí)間改善明顯,原來一個(gè)個(gè)包安裝、配置、運(yùn)行,現(xiàn)在通過自動(dòng)化運(yùn)維工具ansible啟動(dòng)一個(gè)個(gè)docker容器。
附圖說明
圖1為本發(fā)明的openstack組件鏡像制作流程圖。
圖2為本發(fā)明的openstack組件部署流程圖。
圖3為本發(fā)明的openstack組件升級(jí)流程圖。
具體實(shí)施方式
下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說明本發(fā)明的技術(shù)方案。
如圖1至圖3所示,本發(fā)明openstack組件容器化的構(gòu)建方法包括以下步驟:
步驟一,openstack組件docker(開源的應(yīng)用容器引擎)鏡像生成;
步驟二,部署節(jié)點(diǎn)運(yùn)行環(huán)境配置;
步驟三,部署節(jié)點(diǎn)本地registry(registry是docker鏡像管理軟件)服務(wù)配置;
步驟四,導(dǎo)入openstack組件docker鏡像,該步驟通過docker client端命令行工具和導(dǎo)入腳本完成;
步驟五,推送openstack組件docker鏡像到本地registry保存,該步驟通過docker client端命令行工具和自動(dòng)化腳本完成;
步驟六,將openstack組件部署到服務(wù)器;
步驟七,升級(jí)已經(jīng)部署的openstack組件。
所述步驟一包括以下步驟:
步驟十,編寫Jinja2(基于python的模板引擎)模板文件;
步驟十一,ansible(基于python開發(fā)的自動(dòng)化運(yùn)維工具)工具通過Jinja2模板文件和生成docker鏡像所需配置文件,生成Dockerfile(Dockerfile是由一系列命令和參數(shù)構(gòu)成的腳本)文件;
步驟十二,ansible工具通過docker.py模塊調(diào)用docker執(zhí)行Dockerfile文件指定的一系列命令和參數(shù)進(jìn)行openstack組件鏡像構(gòu)建;
步驟十三,openstack組件鏡像構(gòu)建完成,根據(jù)配置文件將鏡像推送到指定的Registry服務(wù)器保存或者將生成的openstack組件鏡像保存為歸檔壓縮文件。
所述步驟二包括以下步驟:
步驟二十,部署節(jié)點(diǎn)和被部署節(jié)點(diǎn)之間通信是通過ssh協(xié)議,首先配置主機(jī)之間ssh無(wú)密碼登錄;
步驟二十一,配置主機(jī)名和ip地址之間映射關(guān)系;
步驟二十二,配置ntp server服務(wù)(平臺(tái)各組件之間工作正常,要求嚴(yán)格時(shí)間同步);
步驟二十三,安裝部署模塊和相關(guān)依賴包。
所述步驟三包括以下步驟:
步驟三十,registry軟件是以docker鏡像方式發(fā)布,配置registry首先配置docker deamon;
步驟三十一,docker deamon運(yùn)行正常,導(dǎo)入registry docker鏡像;
步驟三十二,運(yùn)行registry容器實(shí)例。
所述步驟六包括以下步驟:
步驟六十,編寫ansible playbook(ansible使用一種比較易于理解的方法來描述自己的任務(wù)配置文件。ansible的任務(wù)配置文件被稱之為“playbook”)容器部署代碼;
步驟六十一,用戶在部署節(jié)點(diǎn)上執(zhí)行deploy(部署)命令,該命令調(diào)用自動(dòng)化運(yùn)維工具ansible playbook部署代碼,部署代碼通過docker.py調(diào)用docker運(yùn)行openstack組件容器實(shí)例。
所述步驟七包括以下步驟:
步驟七十,用戶準(zhǔn)備升級(jí)使用的openstack組件docker鏡像,更新到原來部署節(jié)點(diǎn);
步驟七十一,修改全局配置文件openstack組件docker鏡像tag參數(shù)為新鏡像tag;
步驟七十二,用戶在部署節(jié)點(diǎn)上執(zhí)行upgrade(升級(jí))命令,該命令調(diào)用自動(dòng)化運(yùn)維工具ansible playbook升級(jí)代碼,升級(jí)代碼通過docker.py調(diào)用docker完成openstack組件鏡像比較,如果鏡像與原來鏡像不同,則刪除原來運(yùn)行的容器實(shí)例,使用指定的新鏡像創(chuàng)建容器實(shí)例,完成組件升級(jí)。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的解決的技術(shù)問題、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。