配置管理系統(CMDB)
阿新 • • 發佈:2019-01-08
一、 前言
1.1 簡介
CMDB(Configuration Management Database)配置管理資料庫,是所有運維工具的資料基礎。70%~80%的IT相關問題與環境的變更有著直接的關係。實施變更管理的難點和重點並不是工具,而是流程。即通過一個自動化的、可重複的流程管理變更,使得當變更發生的時候,有一個標準化的流程去執行,能夠預測到這個變更對整個系統管理產生的影響,並對這些影響進行評估和控制。而變更管理流程自動化的實現關鍵就是CMDB。
1.2 功能
應該知道包含這幾種功能:整合、調和、同步、對映和視覺化
使用者管理,記錄測試,開發,運維人員的使用者表
業務線管理,需要記錄業務的詳情
專案管理,指定此專案用屬於哪條業務線,以及專案詳情
應用管理,指定此應用的開發人員,屬於哪個專案,和程式碼地址,部署目錄,部署叢集,依賴的應用,軟體等資訊
主機管理,包括雲主機,物理機,主機屬於哪個叢集,執行著哪些軟體,主機管理員,連線哪些網路裝置,雲主機的資源池,儲存等相關資訊
主機變更管理,主機的一些資訊變更,例如管理員,所屬叢集等資訊更改,連線的網路變更等
網路裝置管理,主要記錄網路裝置的詳細資訊,及網路裝置連線的上級裝置
IP管理,IP屬於哪個主機,哪個網段, 是否被佔用等
二、 四種實現方式
2.1 Agent方式
- 可以將伺服器上的Agent程式做定時任務,每隔一段時間就將資料資訊交給指定的API錄入資料庫
- 本質上就是在各個伺服器上執行
subprocess.getoutput()
命令,然後將每臺機器上執行的結果返回給指定的API,主機API收到這些資料之後,將其放入到資料庫中,最終通過web介面展現給管理員或使用者
優缺點分析:
優點: 速度快
缺點: 需要為每一臺伺服器都部署一個Agent程式,機器過多時耗費的人力成本大
2.2 ssh方式
- 基於python的 paramiko模組實現,中控機通過登入到每臺伺服器上,執行命令收集各個伺服器上的資訊
優缺點分析:
優點: 不需要為每一臺伺服器都部署一個Agent程式
缺點: 需要登入,執行速度慢
import paramiko #建立ssh物件 ssh = paramiko.SSHClient() # 連線伺服器 ssh.connect(hostname='localhost', port=22, username='root', password='123') # 執行命令 stdin, stdout, stderr= ssh.exec_command('ifconfig') # 拿到命令的執行結果 res = stdout.read() # 關閉連線 ssh.close()機器較少時可以使用此方法
2.3 saltstack方式
- 本質上和前一種方案大致是差不多的流程,由中控機發送命令給伺服器執行。伺服器將結果放入另一個佇列中,中控機獲取收集到的伺服器資訊傳送到API進而錄入資料庫。
優缺點分析:
優點: 速度快,開發成本低
缺點: 需要依賴於第三方工具
- saltstack安裝與配置
1. 安裝 master端 # 安裝salt-master yum install salt-master # 修改配置檔案:/etc/salt/master interface: 0.0.0.0 # 表示Master的IP # 啟動 service salt-master start slave端: # 安裝salt-minion yum install salt-minion # 修改配置檔案 /etc/salt/minion master: 10.211.55.4 # master的地址 或 master: - 10.211.55.4 - 10.211.55.5 random_master: True id: c2.salt.com # 客戶端在salt-master中顯示的唯一ID # 啟動 service salt-minion start 2. 授權 """ salt-key -L # 檢視已授權和未授權的slave salt-key -a salve_id # 接受指定id的salve salt-key -r salve_id # 拒絕指定id的salve salt-key -d salve_id # 刪除指定id的salve """ 3. 執行 # 在master伺服器上對salve進行遠端操作 salt 'c2.salt.com' cmd.run 'ifconfig' # 基於API的方式 import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
2.4 Puppet方式(瞭解)
- 通過RPC訊息佇列將執行的結果返回給使用者!年代久遠,作為了解,不做敘述