為啥要做CMDB
運維自動化最重要的就是標准化一切
- OS的選擇統一化,同一個項目使用同樣的OS系統部署其所需要的各類軟件
- 軟件安裝標准化,例如JAVA虛擬機,php,nginx,mysql等各類應用需要的軟件版本,安裝- - 目錄,數據存放目錄,日志存放目錄等
- 應用包目錄統一標准化,及應用命名標准化
- 啟動腳本統一目錄和名字,需要變化的部分通過參數傳遞
- 配置文件標准化,需要變化的部分通過參數傳遞
- 日志輸出,日志目錄,日志名字標准化
- 應用生成的數據要實現統一的目錄存放
- 主機/虛擬機命名標准化,虛擬機管理使用標准化模板
- 使用docker比較容易實現軟件運行環境的標准化
CMDB實現的四種方式
- Agent實現方式
其本質上就是在各個服務器上執行subprocess.getoutput()命令,然后將每台機器上執行的結果,返回給主機API,然后主機API收到這些數據之后,放入到數據庫中,最終通過web界面展現給用戶
- ssh實現方式 (基於Paramiko模塊)
中控機通過Paramiko(py模塊)登錄到各個服務器上,然后執行命令的方式去獲取各個服務器上的信息
import paramiko
# 創建SSH對象
ssh = paramiko.SSHClient()
# 允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接服務器
ssh.connect(hostname='c1.salt.com', port=22, username='root', password='123')
# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = stdout.read()
# 關閉連接
ssh.close()
- saltstack方式
此方案本質上和第二種方案大致是差不多的流程,中控機發送命令給服務器執行。服務器將結果放入另一個隊列中,中控機獲取將服務信息發送到API進而錄入數據庫。
salstack的安裝和配置
1.安裝和配置
master端:
1. 安裝salt-master
yum install salt-master
2. 修改配置文件:/etc/salt/master
interface: 0.0.0.0 # 表示Master的IP
3. 啟動
service salt-master start
slave端:
1. 安裝salt-minion
yum install salt-minion
2. 修改配置文件 /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
3. 啟動
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'])