《事件推送網關:讓cmdb告別「花瓶」》自發起至今已兩月有餘,在此期間咱們從無到有對cmdb的事件推送進行了充分的摸索,不斷的踩坑填坑,現已基本實現瞭如下功能:python
基於cmdb,咱們對基礎設施的管理有了依據,事件推送網關保證了基礎設置的有序流動,咱們能夠抽出更多的時間專一於上層的需求建設。web
系統隔離是一直是運維管理的一大難題,統一的esb總線來適配全部系統是不現實的,所以咱們但願經過事件推送網關來間接打通。markdown
藍鯨cmdb原生支持主機業務(資源池、主機)、業務拓撲(集羣、拓撲)、組織架構(業務)等內容的新增、編輯、刪除動做,觸發回調自行開發的事件推送網關(gateway);架構
gateway接收藍鯨cmdb事件推送的POST請求,合併請求後調用zabbix、jumpserver等系統的API,實現資產分組、建立,主機轉移等操做;運維
cmdb的觸發規則主要分爲如下幾類:ide
# 業務觸發規則下的參數
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'biz'}
{'action': 'delete', 'obj_type': 'biz'}
複製代碼
# 集羣觸發規則下的參數
{'action': 'create', 'obj_type': 'set'}
{'action': 'update', 'obj_type': 'set'}
{'action': 'delete', 'obj_type': 'set'}
複製代碼
# 模塊觸發規則下的參數
{'action': 'create', 'obj_type': 'module'}
{'action': 'update', 'obj_type': 'module'}
{'action': 'delete', 'obj_type': 'module'}
複製代碼
# 主機轉移觸發的主機標識更新規則下的參數下
{'action': 'update', 'obj_type': 'hostidentifier'}
複製代碼
注意:業務、集羣、模塊的更新操做,會自動觸發主機標識更新,爲何呢?post
由於主機標識更新是最小的原子操做,業務、集羣、模塊一旦更新,全部的主機的分組信息都須要作出一致性改變。所以,最終觸發的操做以下:spa
# 業務更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
# 集羣更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
# 模塊更新
{'action': 'create', 'obj_type': 'biz'}
{'action': 'update', 'obj_type': 'hostidentifier'}
複製代碼
考慮到cmdb事件推送POST的參數格式的多樣性,給gateway解析參數帶來了必定的複雜度,在此咱們特定義了一下cmdb觸發規則:code
與Zabbix不一樣的是,Jumpserver沒有建立主機操做,由於默認狀況下在後續文章《[藍鯨實現多環境vsphere虛擬機交付]》中會自動在jumpserver中建立主機。經過這一流程,咱們默認全部的主機已經在jumpserver存在了。orm
在沒有cmdb以前,咱們的基礎設施管理是無序的,可是這也並不意味着有了cmdb就能將其管理的井井有理。所以,我認爲最主要的核心思想仍是基於cmdb,讓基礎設施在各平臺有效的流轉起來,而不是讓其真正成爲一個「花瓶」。