1、初識CMDB

1、自動化運維平臺的特性php

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

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

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

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

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

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

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

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

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

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

2、CMDB包含的功能

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

3、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 安裝請查看:

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

方式四:

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


參考:

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

相關文章
相關標籤/搜索