背景
在DevOps CMDB平臺建設的過程中,我們可以很容易的將業務應用所涉及的云資源(WAF、K8S、虛擬機等)、CICD工具鏈(Jenkins、ArgoCD)、監控、日志等一次性的維護到CMDB平臺,但隨著時間的推移,我們卻很難及時適應業務應用資源的變化,從而及時有效的更新DevOps CMDB資源。比如某SRE工程師處理完下線某K8S應用的Jira工單后,CMDB平臺工程師無法及時知道K8S資源的變化及相關信息,也就無法及時的維護CMDB相關應用。
解決方案
針對上述痛點以及基于Jira工單的DevOps運維背景下,我們可以采用CMDB整合Jira工單的方案來解決CMDB信息維護的問題。具體內容如下:
目標
實現Jira工單處理事件自動同步到CMDB平臺及通過郵件、企微消息等通知到CMDB維護人員。
步驟
1 集成Jira和CMDB平臺
使用Jira的WebHooks或Jira REST API來監聽特定的工單事件(如狀態變更、特定字段更新等)。
確保CMDB平臺支持API調用或可以通過某種方式接受外部系統的請求。
2 創建Jira WebHook
2.1 登錄Jira管理界面
首先,以管理員身份登錄到Jira管理界面。
2.2. 導航到WebHook配置頁面
點擊右上角的齒輪圖標,選擇 "系統"。
在系統頁面左側的菜單中,找到并點擊 "高級" 部分下的 "WebHooks"。
2.3. 創建新的WebHook
在WebHooks頁面,點擊 "創建WebHook" 按鈕。
填寫WebHook的基本信息:
名稱: 為WebHook指定一個名稱,便于識別。
描述: (可選)填寫描述信息。
URL: 輸入接收WebHook請求的目標URL。
選擇事件: 選擇觸發WebHook的事件類型,可以是某個特定事件(如問題創建、更新、刪除等)或多個事件。
例如,選擇“Issue Updated”事件來觸發WebHook。
配置過濾器(可選):
你可以添加JQL(Jira Query Language)過濾器,以便僅在特定問題匹配條件時觸發WebHook。
例如,添加 project = "MYPROJECT" AND status = "Confirmed" 以便僅當特定項目中的問題狀態變為“Confirmed”時觸發WebHook。
點擊 "創建" 按鈕,保存WebHook。
示例
以下是一個配置示例,用于在問題更新時觸發WebHook,且僅在狀態變為“Confirmed”時觸發
2.4 接收WebHook的服務
創建WebHook后,確保接收WebHook請求的服務能夠處理Jira發送的HTTP請求。以下是一個簡單的Flask示例,展示如何接收和處理Jira WebHook請求
2.5 CMDB服務如何處理Jira工單事件
這里可以區分為自動處理、手動處理。
自動處理:操作簡單且不需要Jira工單詳細信息的事件可以讓CMDB平臺自動化處理,比如停止應用。
手動處理:操作復雜且需要Jira工單詳情的事件,可以在CMDB收到事件后進一步處理,提取工單內容,并以郵件的方式提醒CMDB維護人員,可以設置周期性提醒直到CMDB維護人員處理完CMDB變更后關閉該提醒。
通過上述步驟和代碼示例,你可以創建一個接收Jira事件并處理CMDB更新的完整流程,確保CMDB數據的實時性和準確性,同時通知相關團隊成員了解更新情況。