要想要更好的學(xué)習(xí)必須要先了解什么是CMDB,CMDB,Configuration Management Database的簡稱,從英文單詞中直譯”配置管理數(shù)據(jù)庫“,但實(shí)際上更多的被稱呼為”資產(chǎn)管理系統(tǒng)“。
### 方案一:agent方案
```python
web服務(wù)<=>數(shù)據(jù)庫<=>API程序<=>agent(部署到服務(wù)器上python服務(wù))
????????1.python代碼利用subprocess模塊執(zhí)行l(wèi)inux命令
????????import subprocess
??????res1 = subprocess.getoutput('ipconfig')
??????res2 = subprocess.getoutput('...')
??????...
????2.利用requests模塊post方法將命令結(jié)果發(fā)送回API程序
??????3.API程序?qū)?shù)據(jù)進(jìn)行二次分析過濾,之后發(fā)送存儲(chǔ)到數(shù)據(jù)庫
????4.web服務(wù)展示數(shù)據(jù)
```
### 方案二:ssh類方案
```python
web服務(wù)<=>數(shù)據(jù)庫<=>API程序<=>中控機(jī)(paramiko)<=>服務(wù)器
????選擇1:paramiko模塊鏈接服務(wù)器
????選擇2:ansible批量管理??# 底層鏈接也是基于paramiko
```
### 上述兩套方案對(duì)比
```python
# 1.agent方案
????????優(yōu)點(diǎn)
??????????定時(shí)執(zhí)行agent腳本,速度快
????????缺點(diǎn)
??????????每次都需要部署
????????應(yīng)用場景
??????????服務(wù)器數(shù)量特別多
# 2.ssh類
????????優(yōu)點(diǎn)
??????????不需要部署agent服務(wù)
????????缺點(diǎn)
??????????使用paramiko登陸服務(wù)器速度比較慢
????????應(yīng)用場景
??????????服務(wù)器較少
```
### 方案三:saltstack方案
```python
'''saltstack也是用python寫的一個(gè)軟件,master與所有minion彼此之間底層通過兩個(gè)zeromq進(jìn)行數(shù)據(jù)交互'''
web服務(wù)<=>數(shù)據(jù)庫<=>API程序<=>中控機(jī)(salt-master)<=>服務(wù)器(salt-minion)
# 優(yōu)點(diǎn)
????不需要寫任何代碼,直接在中控機(jī)和服務(wù)器上yum install salt-master/minion
# 使用場景
????服務(wù)器上已經(jīng)部署了saltstack,那就多一事不如少一事
```
### 方案四:puppet方案
```python
'''較老,底層用ruby on rails編寫,目前基本不用了'''
新浪第一代cmdb使用的就是puppt,后來由于ruby使用者較少不便于后續(xù)編寫及維護(hù)所以之后基本不在使用了
架構(gòu)跟salt-stack方案一致,大致每30分鐘統(tǒng)計(jì)一次
```