實戰:基於Python構建運維自動化平臺

導語:

今天與你們一塊兒探討如何基於Python構建一個可擴展的運維自動化平臺,也但願能與你們一塊兒交流,共同成長。前端

這次分享將經過介紹OMServer、OManager具有的功能、架構設計、模塊定製、安全審計、C/S結構的實現等幾個方面的內容來展開。linux

爲何選擇Python?

  • 默認安裝且跨平臺sql

  • 可讀性好且開發效率高數據庫

  • 豐富的第三方庫(開發框架、各種API、科學計算、GUI等)編程

  • 社區活躍&衆多開發者。設計模式

0BaCAPSnJs8Python在騰訊的現狀,根據去年內部提交組件語言統計,除去二、三、4前端技術,Python在高級編程語言中排第3位。緩存

應用在系統運維、業務邏輯、運營平臺、測試工具、數據挖掘等領域,騰訊大名鼎鼎的「藍鯨」運維PAAS平臺就是基於Python語言來構建的。安全

1、    平臺介紹

OMServer 一個集中式的Linux集羣管理(基礎)平臺,具有業務集羣管理、實時安全審計、功能模塊定製、數據加密傳輸、支持主流Python組件、使用簡單且體驗好等特色。服務器

一、平臺截圖微信

0BaCAik3vea

0BaCAhPa9ia

二、平臺採用到的第三方庫

Django : 一個開放源代碼的Web應用框架,由Python寫成,採用了MVC的軟件設計模式;

rpyc : 一個 Python 實現的RPC和分佈式計算的工具。支持同步和異步操做、回調等;

saltstack 、ansible 、func : 基本Python開發的自動化配置管理與流程控制組件;

Mysql : 是一個很是流行的關係型數據庫管理系統。

2、    平臺架構設計

一、OMServer架構圖

0BaCAfy7l6e

二、架構說明

OMServer平臺爲三層架構,分別爲WEB交互層、分佈式計算層、集羣管理服務層。

第一層:即爲WEB交互層,典型的B/S架構,以供管理員操做的交互平臺,也是OMServer的核心,基於Django開發;

第二層:分佈式計算層,提供與主控端的鏈接通道,採用的是rpyc傳輸協議。

協議操做流程:

前端模塊參數->加密傳輸->任務執行->返回結果集->解密輸出。

第三層:集羣管理服務層,整合Python主流的遠程操做組件(支持Saltstack、Anaible、Func),對被控端(業務服務器集羣)進行管理,其中主控端能夠根據不一樣IDC環境,採用多地多點的管理方式,可提高冗餘度及執行效率。

主控端操做模塊以不一樣Python文件加以區分,便於維護,可靈活定製操做邏輯及橫向擴展等特色。

三、平臺架構優點

管理端多機支持,可按不一樣IDC劃分;

安全性高,加密傳輸、定義私有通信規範(TCP);

支持多種管理客戶端接入(WEB、桌面、移動);

調用Python組件的高級特性(Playbook、State);

功能擴展性能力強,模塊定製化。

四、架構操做流程

0BaCARxtxHU

上圖將三個層次的交互流程進行串連,能夠清晰瞭解OMServer架構的操做流程,結束了傳統式直連APP Server的操做,更加規範咱們的操做事件,必定程度能夠避誤一些潛在的誤操做。

五、整合遠程操做Python組件

0BaCAQdeNf6

分兩步:

  1. 提早配置主控端與被控端的信任關係,通常爲證書或SSH 認證;

  2. 經過OMServer主控端封裝好的任務模塊與API接口,實現定製化的任務下發及執行。

3、    平臺模塊定製

一、任務模塊定製的思路

1)任務模塊:即爲一個「操做事件」爲顆粒的任務,如重載配置、部署緩存服務、中止Nginx服務等原子操做;

2)添加模塊的步驟

① 定義任務模塊「輸入參數」,採用HTML Form元素,能夠爲輸入、下拉、單複選框等元素;

0BaCATXGUim

② 編寫後臺模塊代碼,其中執行部分由Saltstack或Ansible的Client_API來實現;

0BaCAWNBets

③ 任務模塊核心代碼,只須要5行代碼就能夠實現一個SHELL腳本下發、執行的功能。

0BaCAUrZ08O

3)運行模塊的步驟: 選擇任務模塊 & 操做對象 -> 指定輸入參數 -> 運行 -> 返回執行結果。

二、當咱們的平臺已經具有可定製、擴展操做的能力,運維的核心工做就聚焦如下幾點:

  • 平臺功能改進、升級,須要具有DevOps能力;

  • 根據業務運營需求,作任務功能模塊的編寫的工做;

  • 平常工做梳理(標準、流程化建設),更好將原子操做串成流程;

  • 系統、業務的調優,服務業務。

4、安全審計的實現

一、安全審計技術架構

0BaCAZ6U16u

安全審計功能模塊分兩部分,一部分爲操做事件前臺展現,另部分爲部署在服務器側的採集Agent,經過CGI接口上報至數據庫存儲,可對上報的數據做關鍵字監控,發現異常能夠觸發告警。

二、Agent上報實現原理

① 實現原理很是簡單,經過修改Linux系統環境配置文件/etc/profile,定義history事件相關環境變量,捕捉全部Linux登陸用戶會話中的操做事件及指令,實時經過OMAudit_agent.py中的HTTP GET CGI向數據庫寫操做事件流水。

0BaCAYa9PMG

② 管理前臺頁面經過定時刷新,獲取最新的操做事件。

0BaCAafm0B6

5、C/S結構的實現

一、OManager桌面版截圖

0BaCAeapxMO

二、OManager桌面版架構

0BaCAbhIhaS

三、後續優化

  • 整合ansible或saltstack高級功能,如ansible playbook;

  • 將多個任務模塊打包成模板對列,實現原子操做與運維變動流程的結合;

  • 引用任務調度Celery,支持更大併發;

  • 任務對列支持暫停、停止、重運行功能,實現操做可控;

  • 提供與CMDB訪問對接,通用性更強。


文章來源:馬哥教育 

官方微信:馬哥linux運維 

Linux運維學習交流羣:537045784

相關文章
相關標籤/搜索