一、初識CMDB

一、自動化運維平臺的特性

運維自動化最重要的就是標準化一切

  1. OS的選擇統一化,同一個項目使用同樣的OS系統部署其所需要的各類軟件

  2. 軟件安裝標準化,例如JAVA虛擬機,php,nginx,mysql等各類應用需要的軟件版本,安裝目錄,數據存放目錄,日誌存放目錄等。

  3. 應用包目錄統一標準化,及應用命名標準化

  4. 啓動腳本統一目錄和名字,需要變化的部分通過參數傳遞

  5. 配置文件標準化,需要變化的部分通過參數傳遞

  6. 日誌輸出,日誌目錄,日誌名字標準化

  7. 應用生成的數據要實現統一的目錄存放

  8. 主機/虛擬機命名標準化,虛擬機管理使用標準化模板

  9. 使用docker比較容易實現軟件運行環境的標準化

二、CMDB包含的功能

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

三、CMDB實現的四種方式

方式一:Agent實現方式:

Agent方式,可以將服務器上面的Agent程序作定時任務,定時將資產信息提交到指定API錄入數據庫

       其本質上就是在各個服務器上執行subprocess.getoutput()命令,然後將每臺機器上執行的結果,返回給主機API,然後主機API收到這些數據之後,放入到數據庫中,最終通過web界面展現給用戶

subprocess,執行命令,通過request模塊 調用api接口

優點:速度快
缺點:需要爲每臺服務器部署一個Agent程序

第一種方式.png

方式二:ssh實現方式 (基於Paramiko模塊)

中控機通過Paramiko(py模塊)登錄到各個服務器上,然後執行命令的方式去獲取各個服務器上的信息
優點:無Agent
缺點:依賴於網絡,速度慢

2.png

如果在服務器較少的情況下,可應用此方法

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進而錄入數據庫

優點:快,開發成本低
缺點:依賴於第三方工具

第三種方式.png

saltstack 安裝請查看:

http://blog.51cto.com/silencezone/2340303

方式四:

Puppet(ruby語言開發)(瞭解)


參考:

https://lupython.gitee.io/2018/05/05/CMDB%E4%BB%8B%E7%BB%8D/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章