cmdb資產管理系統


簡介

CMDB是所有運維工具的數據基礎

為什么使用CMDB系統

1.為了提高運維效率(實現運維自動化的第一步)
2.Excel管理資產過於混亂, 不方便年底進行資產的審計, 因此需要開發一套cmdb

CMDB功能

1.用戶管理,記錄測試,開發,運維人員的用戶表
2.業務線管理,需要記錄業務的詳情
3.項目管理,指定此項目用屬於哪條業務線,以及項目詳情
4.應用管理,指定此應用的開發人員,屬於哪個項目,和代碼地址,部署目錄,部署集群,依賴的應用,軟件等信息
5.主機管理,包括雲主機,物理機,主機屬於哪個集群,運行着哪些軟件,主機管理員,連接哪些網絡設備,雲主機的資源池,存儲等相關信息
6.主機變更管理,主機的一些信息變更,例如管理員,所屬集群等信息更改,連接的網絡變更等
7.網絡設備管理,主要記錄網絡設備的詳細信息,及網絡設備連接的上級設備
8.IP管理,IP屬於哪個主機,哪個網段, 是否被占用等

CMDB實現的核心邏輯(三種方式)

方式1:agent主動推送的方式

每台主機上寫一個agent的py腳本,然后將主機上的信息發送API

適應場景:服務器多

優點:速度快

缺點:需要為每一台主機裝agent程序

import requests
import subprocess
res = subprocess.getoutput('ipconfig')   # 執行linux命令
print(res)
requests.post(url='http://127.0.0.1',data=res.encode('UTF-8'))   # 將信息推送到API上

agent方式架構圖

 

方式2:SSH方式實現(paramiko模塊

通過中控機操作采集信息,發送到API過濾處理數據

適應場景:服務器較少的情況下

優點:不需要每台機器裝agent程序

缺點:有一個中控機,速度慢

import paramiko
ssh = paramiko.SSHClient()  # 生成ssh客戶端連接對象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 允許連接不在know_hosts文件中的主機
ssh.connect(hostname='10.0.0.51', port=22, username='root', password='1')  # 連接服務器,ip地址,端口,主機名,主機密碼
stdin,stdout,stdress = ssh.exec_command('ifconfig')  # 執行linux命令
# stdin:輸入的命令  stdout:輸出的內容,stdress:
result = stdout.read()
print(result.decode('utf-8'))
ssh.close()  # 關閉連接

 ssh方式架構圖

 

 方式3:Salt-Stack方式

跟ssh方式差不多,中控機發送命令給服務器執行。服務器將結果放入另一個隊列中,中控機獲取將服務信息發送到API進而錄入數據庫。

使用場景:公司已經使用了Salt-Stack軟件

優點:快,開發成本低

缺點:依賴於第三方工具

salt-stack安裝

# master主機上
# 安裝salt-master
yum install salt-master
# 修改配置文件:/etc/salt/master
interface: 0.0.0.0 # 表示Master的IP
# 啟動
service salt-master start
 
 
# minion奴隸機上
# 安裝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

給主機授權

salt-key -L                # 查看已授權和未授權的slave
salt-key -a  salve_id      # 接受指定id的salve
salt-key -A # 允許所有的奴隸機
salt-key -r salve_id # 拒絕指定id的salve salt-key -d salve_id # 刪除指定id的salve

 在master服務器上對salt進行遠程操控

salt 'db01' cmd.run 'ifconfig'     # 獲取奴隸機的信息

基於API的方式遠程操控master

# 只適用於python2
import
salt.client local = salt.client.LocalClient() result = local.cmd('db01', 'cmd.run', ['ifconfig']) # 執行linux操作命令

# python3 API方式

 salt-stack方式架構圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM