白文秀,吳瑞苗
(吉林師范大學計算機學院,吉林四平 136000)
基于Django的運維自動化系統設計
白文秀,吳瑞苗
(吉林師范大學計算機學院,吉林四平136000)
本文的運維自動化系統后臺采用Django框架,前端使用ExtJS框架,通過Ajax進行通訊,后臺任務引擎的核心采用Salt技術。系統通過腳本與Web結合的方式,把運維日常需要登錄機器、不透明的操作,轉換成成標準化、可視化的流程,幫助運維迅速完成繁瑣、價值低的工作。
Django;框架;運維自動化
近年來,互聯網上頗多病毒的爆發、肆虐及蔓延,使得整個IT行業均已認識到對于終端以及服務器管理的重要性。隨著Linux系統及虛擬化技術的誕生和發展,運維自動化的生態環境也隨即改變,從僅面向單純支持Window系統的PC設備,延伸拓展到現如今的面向用戶、面向業務的各類設備。
運維自動化系統通過集中管理服務器信息、提供流程化的業務操作,幫助運維管理、操作大批量的服務器,將日常繁瑣、重復、價值低的工作簡化為分體獨立、且真實可見的流程,因而能極大地提高運維的工作效率,減少人為故障的發生[1]。特別地,當故障發生時,能夠推動運維更快地解決問題,使設計服務盡快恢復正常運行[2]。
1.1Django簡介
Django由Kansas州中的一個網絡開發小組通過使用Python編撰開發而成,主要采用了MVC的軟件設計模式。Django注重組件的重用性和“可插拔性”,敏捷開發和DRY法則(Don't Repeat Yourself)[3].
1.2ExtJS簡介
ExtJS是一個利用JavaScript進行開發而成功推出的前端框架,通常使用Ajax與后臺來建立通信[4]。ExtJS是一款典型的Web富客戶端框架,提供了多種控件以實現各種各樣的功能。
本運維自動化系統由9個模塊組成,可描述為:首頁、項目管理、服務器管理、腳本管理、執行賬戶管理、腳本執行、常用流程、新建流程和執行歷史[5],如圖1所示。具體地,系統組成中各模塊的功能實現可給出如下設計論述。

圖1 系統模塊組成Fig.1 System modules
2.1首頁模塊
本模塊用于展示業務的主機數、常用流程數、以及任務執行概況,幫助用戶準確把握業務的整體情況。
2.2項目管理模塊
該模塊僅針對僅管理員才有權使用,完成對業務和普通用戶的管理,可實現新增業務、刪除業務、新增用戶、刪除用戶等操作。
2.3執行賬戶管理模塊
執行賬戶決定了任務執行時的權限,是任務在服務器上的執行身份。本模塊用于管理執行賬戶,主要功能包括用戶可新建和刪除執行賬戶名。
2.4服務器管理模塊
本模塊提供對服務器信息的管理功能,管理員通過該項功能控制普通用戶對服務器的訪問權限,以最大限度地保證服務器的運行安全。模塊功能主要包括:
1)用戶新增、修改、刪除服務器信息;
2)管理上傳服務器的機房、公網IP、內網IP、管理網IP和所有者信息;
3)管理者設置用戶的服務權限;
4)擁有服務器權限的普通用戶可增加、修改服務器的描述信息。
2.5腳本管理模塊
本模塊用于對腳本實施管理,普通用戶僅能查看、修改和刪除用戶自身創建的腳本,而管理員則能夠管理所有的腳本。
2.6腳本執行模塊
本模塊的設計是為了方便用戶臨時執行一個腳本,該腳本內容不會被記入保存。若腳本需要傳入參數,可通過輸入腳本參數而給出設計實現,指定執行賬戶以及選擇目標服務器,執行腳本。
2.7新建流程模塊
本模塊主要提供新建流程功能。在創建流程完成后,可選擇直接執行流程,流程不會特別保存;或者選擇保存流程,而后在常用流程模塊中查看、執行該流程。
2.8常用流程模塊
本模塊功能主要分為管理流程和執行流程,普通用戶有權管理、執行其名下配置的流程;管理員可以管理所有已保存的流程。具體分述如下:
1)管理流程:用戶可查看、修改、刪除自己創建的流程,但正在執行中的流程不能被刪除;
2)執行流程:用戶可指定某個流程執行。
2.9常用流程模塊
本模塊主要提供查看執行詳情功能,執行歷史分為2類,即:腳本執行歷史和流程執行歷史。
系統的數據庫總共包含12張表,如表1所示。

表1 本系統應用數據庫表Tab.1 The application database tables
系統設計的各類主要頁面分別有登錄界面、首頁界面、賬戶管理界面、腳本編輯界面、流程界面和執行歷史界面等,下面則以首頁界面和管理界面為例對界面設計展開闡釋說明。
4.1首頁界面設計
本系統首頁界面如圖2所示,該系統界面采用了border布局。
1)north方向是一個工具欄,顯示了本系統的名稱和當前登錄用戶,同時還有一個當前業務的下拉選擇框,用于確定當前操作的執行業務;
2)west方向是一個樹形菜單,除了首頁,其他菜單都至少還設計有一個子菜單;
3)center方向是首頁展示的內容。對于其他界面來說,center方向是其他的內容,但是north和west方向界面則是固定的。

圖2 首頁界面Fig.2 Home Interface
4.2管理界面設計
管理模塊的界面設計如圖3所示。由圖3可知,搜索框處于上部,而下部是內容的展示框,展示全部的或者查找到的內容,中部將根據不同管理模塊的輸入要求而各顯不同內容。

圖3 賬戶管理界面Fig.3 Account Management Interface
5.1測試環境
服務器端:操作系統CentOS7,軟件Python2.7、Django1.9、MySQL5.6、Nginx1.8、uWSGI2.0、Memcached1.4、Celery3.1、Redis3.0。
客戶端:操作系統Window7、Chrome瀏覽器。
5.2測試用例
本節以服務器管理測試和腳本管理測試為例簡要介紹了本系統主要應用的部分測試用例,測試結果如表2和表3所示。

表2 服務器管理測試用例Tab.2 Test case of server management

表3 腳本管理測試用例Tab.3 Test case of script manager
5.3測試結論
通過5.2的測試可知,本系統可提供有效的權限隔離,而針對不同類型的用戶,則將提供相應的業務內容權限,進而保證了信息管理和任務執行的安全。
基于Django的運維自動化系統選用了B/S模式,對用戶的輸入進行了嚴格的過濾,同時在權限上實現了業務和服務器權限的劃分,保證了用戶創建的服務器、腳本、流程信息和任務執行的安全性。系統設計的腳本和流程,能夠幫助運維完成大多數的日常工作,達到了系統的設計目標,并將在日后使用過程中予以不斷地拓展完善,研究下一步還將為本系統增加初始化服務器功能和故障報警功能[5]。
[1]毛承國,張衛華,張進鐸等.大規模集群運維自動化的探索與實踐[J].信息安全與技術,2014(2):60-62,73.
[2]宋義華,班孝明.IT應用運維自動化研究與應用[J].網絡安全技術與應用,2014(9):224-225.
[3]劉班.基于Django快速開發Web應用[J].電腦知識與技術:學術交流,2009,5(7):1616-1618.
[4]陳道鑫,宋紹云,袁中旺,等.ExtJS框架在Web軟件開發中的應用[J].電腦知識與技術,2011,7(9):2044-2047.
[5]王大東,劉競遙,侯錕,等.基于Web的計算機考試系統設計與實現[J].吉林師范大學學報(自然科學版),2013(3):45-47.
[6]梁春麗.IT運維管理自動化是關鍵[J].金融科技時代,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-),男,碩士,講師,主要研究方向:軟件工程。