基於python復制藍鯨作業平台


前言

        去年看武sir代碼發布的視頻無意中聽到了藍鯨平台但是一直沒深究,前一段時間公司要搞一個代碼發布平台,但是需求變化很多一直找不到一個很好的參考

        模板,直到試用了一下藍鯨作業平台發現“一切皆作業”的思想非常好,比如一個簡單變更發布:

        1. 對 web 組(3 台機器)停服務

                         在三台機器上執行(/home/tomcat/bin/shutdown.sh)

        2.對web組(3台機器)更新版本文件

                         在三台機器執行(scp xxx yyy),有些公司可能是rsync同步、(git pull)客戶端拉取、svn拉取等等。

        3.對web組 (3台機器)啟動服務

                         在三台機器上執行(/home/tomcat/bin/startup.sh)

        面對不同的公司不同的變更場景,變更發布無非就是停服務、拉取版本文件、分發版本文件到各個服務器、啟動服務。有些場景可能需要再停server應用,有些可能

        用的git或者別的同步,所有這些都可以通過linux命令來操作,將命令封裝成腳本也就是原子,不同的原子按照一定的業務場景執行順序組合成作業,之后的代碼發布

        便可以一鍵完成,換到不同的公司,不同的業務場景無非就是原子執行順序、執行的機器、執行的原子腳本等等不同而已。

        基於此便准備用python復制一個作業平台,雖然是重復造輪子但更能加深對作業平台的理解。

        整個作業平台開發從技術調研到完成耗時將近3個月,差不多每天利用晚上兩個小時和周末時間寫點,項目寫到一半差點想放棄,因為前端實在是太惡心了,而且項

        目剛寫完,存放代碼的服務器就掛了,數據完全丟失,真是天災人禍啊,還好筆記本虛擬機里保留了一份代碼和小澤瑪利亞的最新作品,要不然真想回機房搬服務器

        去。

 

涉及的技術:

        平台使用python的django框架開發

        異步執行作業使用celery(定時作業也會用到)

        在遠程服務器上執行腳本用saltstack的agent(也可以用paramiko、ansible、puppet、自己開發agent等等)

        剩下的就是html、JavaScript、jQuery、css(好惡心)等等

 

思路:

        整個開發剛開始感覺只要理解了藍鯨作業平台的表結構那么整個平台的思路差不多就清晰了。

        主要是以下幾張表:

        nm_account(執行賬戶):存放在每台機器上執行的賬戶

1 CREATE TABLE `nm_account` (
2   `account` varchar(255) NOT NULL COMMENT '賬戶名',
3   `appId` int(11) NOT NULL COMMENT '業務id',
4   `creater` varchar(128) NOT NULL COMMENT '創建人',
5   `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
6   PRIMARY KEY (`account`,`appId`)
7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
View Code

 

        nm_script(執行腳本) :代碼發布變更所有需要執行的腳本

        nm_task(作業名稱):不同腳步所組合的作業

        nm_step(作業步驟):每一個作業所涉及的腳本執行順序

        nm_taskInstance(作業實例):每一個作業執行后的歷史記錄,在作業平台里叫作業實例

        nm_stepInstance(作業實例步驟):每一個作業實例所涉及的腳本執行步驟

        執行機器可以從CMDB里獲取,如果公司已有CMDB就可以直接調接口獲取服務器信息。

 

總結:

        但凡涉及到人工交互的操作就無法用這種自動化作業完成。

        時間緊沒來的及加上定時執行作業,下個版本加上。

        藍鯨的作業平台執行作業時是實時輸出結果的,而saltstack的agent只有在作業完全執行完后才返回結果,對應作業執行時間長的

        用戶體驗不是很好,還是得自己重新設計開發agent。        

        代碼發布還只是項目更新里的一部分,傳統的項目變更流程是:

        1.開發更新完項目代碼  --> 2.開發發郵件給測試人員進行測試 --> 3.測試通過后需要相關開發、測試、運維的領導發郵件確認  -->

        4.運維收到確認郵件后進行代碼發布操作

        有些公司可能走的OA或OA+郵件流程,其實整個就是一套工單系統,開發申請項目更新的工單—>測試人員接到工單后進行測試——>

        運維收到測試通過的工單后進行下一步變更操作。代碼發布只是完成最后一步變更的操作,這時候把作業平台里的每個作業加上接口, 

        提供給其它系統調用,比如工單系統,測試人員在測試通過后直接就調用作業的接口執行相關的作業操作,無需運維參與,如果中間還需要

        相關領導審批,那么在領導審批通過之后再調接口執行作業。有點類似敏捷開發。

     

        圖省事的話推薦大家用騰訊的藍鯨平台。   

        https://v.qq.com/x/page/g0175dx1yzf.html

        藍鯨作業平台操作視頻

        http://bbs.bk.tencent.com/forum.php?mod=viewthread&tid=181 

        作業平台介紹

        http://bk.tencent.com/download/

        藍鯨平台社區版下載

 

我自己的作業平台效果圖:

         1.服務器信息(只為作業平台調服務器信息簡單寫的一個,實在不敢叫CMDB,后期可以從別的CMDB系統里調取)

2.賬號信息

3.腳本列表

3.腳本編輯(哈哈,直接復制的藍鯨的)

4.作業列表

5.編輯作業(執行腳本)

6.編輯作業(文件傳送)

7.作業實例列表

8.作業實例步驟

9.作業實例步驟日志

10.作業實例步驟詳情


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM