白文秀,吳瑞苗
(吉林師范大學(xué)計(jì)算機(jī)學(xué)院,吉林四平 136000)
基于Django的運(yùn)維自動(dòng)化系統(tǒng)設(shè)計(jì)
白文秀,吳瑞苗
(吉林師范大學(xué)計(jì)算機(jī)學(xué)院,吉林四平136000)
本文的運(yùn)維自動(dòng)化系統(tǒng)后臺(tái)采用Django框架,前端使用ExtJS框架,通過Ajax進(jìn)行通訊,后臺(tái)任務(wù)引擎的核心采用Salt技術(shù)。系統(tǒng)通過腳本與Web結(jié)合的方式,把運(yùn)維日常需要登錄機(jī)器、不透明的操作,轉(zhuǎn)換成成標(biāo)準(zhǔn)化、可視化的流程,幫助運(yùn)維迅速完成繁瑣、價(jià)值低的工作。
Django;框架;運(yùn)維自動(dòng)化
近年來,互聯(lián)網(wǎng)上頗多病毒的爆發(fā)、肆虐及蔓延,使得整個(gè)IT行業(yè)均已認(rèn)識(shí)到對(duì)于終端以及服務(wù)器管理的重要性。隨著Linux系統(tǒng)及虛擬化技術(shù)的誕生和發(fā)展,運(yùn)維自動(dòng)化的生態(tài)環(huán)境也隨即改變,從僅面向單純支持Window系統(tǒng)的PC設(shè)備,延伸拓展到現(xiàn)如今的面向用戶、面向業(yè)務(wù)的各類設(shè)備。
運(yùn)維自動(dòng)化系統(tǒng)通過集中管理服務(wù)器信息、提供流程化的業(yè)務(wù)操作,幫助運(yùn)維管理、操作大批量的服務(wù)器,將日常繁瑣、重復(fù)、價(jià)值低的工作簡化為分體獨(dú)立、且真實(shí)可見的流程,因而能極大地提高運(yùn)維的工作效率,減少人為故障的發(fā)生[1]。特別地,當(dāng)故障發(fā)生時(shí),能夠推動(dòng)運(yùn)維更快地解決問題,使設(shè)計(jì)服務(wù)盡快恢復(fù)正常運(yùn)行[2]。
1.1Django簡介
Django由Kansas州中的一個(gè)網(wǎng)絡(luò)開發(fā)小組通過使用Python編撰開發(fā)而成,主要采用了MVC的軟件設(shè)計(jì)模式。Django注重組件的重用性和“可插拔性”,敏捷開發(fā)和DRY法則(Don't Repeat Yourself)[3].
1.2ExtJS簡介
ExtJS是一個(gè)利用JavaScript進(jìn)行開發(fā)而成功推出的前端框架,通常使用Ajax與后臺(tái)來建立通信[4]。ExtJS是一款典型的Web富客戶端框架,提供了多種控件以實(shí)現(xiàn)各種各樣的功能。
本運(yùn)維自動(dòng)化系統(tǒng)由9個(gè)模塊組成,可描述為:首頁、項(xiàng)目管理、服務(wù)器管理、腳本管理、執(zhí)行賬戶管理、腳本執(zhí)行、常用流程、新建流程和執(zhí)行歷史[5],如圖1所示。具體地,系統(tǒng)組成中各模塊的功能實(shí)現(xiàn)可給出如下設(shè)計(jì)論述。
圖1 系統(tǒng)模塊組成Fig.1 System modules
2.1首頁模塊
本模塊用于展示業(yè)務(wù)的主機(jī)數(shù)、常用流程數(shù)、以及任務(wù)執(zhí)行概況,幫助用戶準(zhǔn)確把握業(yè)務(wù)的整體情況。
2.2項(xiàng)目管理模塊
該模塊僅針對(duì)僅管理員才有權(quán)使用,完成對(duì)業(yè)務(wù)和普通用戶的管理,可實(shí)現(xiàn)新增業(yè)務(wù)、刪除業(yè)務(wù)、新增用戶、刪除用戶等操作。
2.3執(zhí)行賬戶管理模塊
執(zhí)行賬戶決定了任務(wù)執(zhí)行時(shí)的權(quán)限,是任務(wù)在服務(wù)器上的執(zhí)行身份。本模塊用于管理執(zhí)行賬戶,主要功能包括用戶可新建和刪除執(zhí)行賬戶名。
2.4服務(wù)器管理模塊
本模塊提供對(duì)服務(wù)器信息的管理功能,管理員通過該項(xiàng)功能控制普通用戶對(duì)服務(wù)器的訪問權(quán)限,以最大限度地保證服務(wù)器的運(yùn)行安全。模塊功能主要包括:
1)用戶新增、修改、刪除服務(wù)器信息;
2)管理上傳服務(wù)器的機(jī)房、公網(wǎng)IP、內(nèi)網(wǎng)IP、管理網(wǎng)IP和所有者信息;
3)管理者設(shè)置用戶的服務(wù)權(quán)限;
4)擁有服務(wù)器權(quán)限的普通用戶可增加、修改服務(wù)器的描述信息。
2.5腳本管理模塊
本模塊用于對(duì)腳本實(shí)施管理,普通用戶僅能查看、修改和刪除用戶自身創(chuàng)建的腳本,而管理員則能夠管理所有的腳本。
2.6腳本執(zhí)行模塊
本模塊的設(shè)計(jì)是為了方便用戶臨時(shí)執(zhí)行一個(gè)腳本,該腳本內(nèi)容不會(huì)被記入保存。若腳本需要傳入?yún)?shù),可通過輸入腳本參數(shù)而給出設(shè)計(jì)實(shí)現(xiàn),指定執(zhí)行賬戶以及選擇目標(biāo)服務(wù)器,執(zhí)行腳本。
2.7新建流程模塊
本模塊主要提供新建流程功能。在創(chuàng)建流程完成后,可選擇直接執(zhí)行流程,流程不會(huì)特別保存;或者選擇保存流程,而后在常用流程模塊中查看、執(zhí)行該流程。
2.8常用流程模塊
本模塊功能主要分為管理流程和執(zhí)行流程,普通用戶有權(quán)管理、執(zhí)行其名下配置的流程;管理員可以管理所有已保存的流程。具體分述如下:
1)管理流程:用戶可查看、修改、刪除自己創(chuàng)建的流程,但正在執(zhí)行中的流程不能被刪除;
2)執(zhí)行流程:用戶可指定某個(gè)流程執(zhí)行。
2.9常用流程模塊
本模塊主要提供查看執(zhí)行詳情功能,執(zhí)行歷史分為2類,即:腳本執(zhí)行歷史和流程執(zhí)行歷史。
系統(tǒng)的數(shù)據(jù)庫總共包含12張表,如表1所示。
表1 本系統(tǒng)應(yīng)用數(shù)據(jù)庫表Tab.1 The application database tables
系統(tǒng)設(shè)計(jì)的各類主要頁面分別有登錄界面、首頁界面、賬戶管理界面、腳本編輯界面、流程界面和執(zhí)行歷史界面等,下面則以首頁界面和管理界面為例對(duì)界面設(shè)計(jì)展開闡釋說明。
4.1首頁界面設(shè)計(jì)
本系統(tǒng)首頁界面如圖2所示,該系統(tǒng)界面采用了border布局。
1)north方向是一個(gè)工具欄,顯示了本系統(tǒng)的名稱和當(dāng)前登錄用戶,同時(shí)還有一個(gè)當(dāng)前業(yè)務(wù)的下拉選擇框,用于確定當(dāng)前操作的執(zhí)行業(yè)務(wù);
2)west方向是一個(gè)樹形菜單,除了首頁,其他菜單都至少還設(shè)計(jì)有一個(gè)子菜單;
3)center方向是首頁展示的內(nèi)容。對(duì)于其他界面來說,center方向是其他的內(nèi)容,但是north和west方向界面則是固定的。
圖2 首頁界面Fig.2 Home Interface
4.2管理界面設(shè)計(jì)
管理模塊的界面設(shè)計(jì)如圖3所示。由圖3可知,搜索框處于上部,而下部是內(nèi)容的展示框,展示全部的或者查找到的內(nèi)容,中部將根據(jù)不同管理模塊的輸入要求而各顯不同內(nèi)容。
圖3 賬戶管理界面Fig.3 Account Management Interface
5.1測試環(huán)境
服務(wù)器端:操作系統(tǒng)CentOS7,軟件Python2.7、Django1.9、MySQL5.6、Nginx1.8、uWSGI2.0、Memcached1.4、Celery3.1、Redis3.0。
客戶端:操作系統(tǒng)Window7、Chrome瀏覽器。
5.2測試用例
本節(jié)以服務(wù)器管理測試和腳本管理測試為例簡要介紹了本系統(tǒng)主要應(yīng)用的部分測試用例,測試結(jié)果如表2和表3所示。
表2 服務(wù)器管理測試用例Tab.2 Test case of server management
表3 腳本管理測試用例Tab.3 Test case of script manager
5.3測試結(jié)論
通過5.2的測試可知,本系統(tǒng)可提供有效的權(quán)限隔離,而針對(duì)不同類型的用戶,則將提供相應(yīng)的業(yè)務(wù)內(nèi)容權(quán)限,進(jìn)而保證了信息管理和任務(wù)執(zhí)行的安全。
基于Django的運(yùn)維自動(dòng)化系統(tǒng)選用了B/S模式,對(duì)用戶的輸入進(jìn)行了嚴(yán)格的過濾,同時(shí)在權(quán)限上實(shí)現(xiàn)了業(yè)務(wù)和服務(wù)器權(quán)限的劃分,保證了用戶創(chuàng)建的服務(wù)器、腳本、流程信息和任務(wù)執(zhí)行的安全性。系統(tǒng)設(shè)計(jì)的腳本和流程,能夠幫助運(yùn)維完成大多數(shù)的日常工作,達(dá)到了系統(tǒng)的設(shè)計(jì)目標(biāo),并將在日后使用過程中予以不斷地拓展完善,研究下一步還將為本系統(tǒng)增加初始化服務(wù)器功能和故障報(bào)警功能[5]。
[1]毛承國,張衛(wèi)華,張進(jìn)鐸等.大規(guī)模集群運(yùn)維自動(dòng)化的探索與實(shí)踐[J].信息安全與技術(shù),2014(2):60-62,73.
[2]宋義華,班孝明.IT應(yīng)用運(yùn)維自動(dòng)化研究與應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(9):224-225.
[3]劉班.基于Django快速開發(fā)Web應(yīng)用[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2009,5(7):1616-1618.
[4]陳道鑫,宋紹云,袁中旺,等.ExtJS框架在Web軟件開發(fā)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2011,7(9):2044-2047.
[5]王大東,劉競遙,侯錕,等.基于Web的計(jì)算機(jī)考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(3):45-47.
[6]梁春麗.IT運(yùn)維管理自動(dòng)化是關(guān)鍵[J].金融科技時(shí)代,2012(2):35-39.
Design of operationand maintenance automation system based on Django
BAI Wenxiu,WU Rui-maio
(Computer College,Jinlin Normal University,Siping Jilin 136000,China)
This paper presents the operation and maintenance automation system,in which the background using Django framework,the front-end using ExtJS framework,and through the Ajax communication,the core of the background task engine using Salt technology. The system combines script with Web,and converts opaque operations and the daily operation and maintenance which need to log on the machine,into the standardized,visualization process.The research helps operation and maintenance quickly complete the tedious,low value work.
django;framework;operation automation
TP311
A
2095-2163(2016)03-0000-00
白文秀(1976-),男,碩士,講師,主要研究方向:軟件工程。