01-01 為什么要學CMDB


為啥要做CMDB

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

  • OS的選擇統一化,同一個項目使用同樣的OS系統部署其所需要的各類軟件
  • 軟件安裝標准化,例如JAVA虛擬機,php,nginx,mysql等各類應用需要的軟件版本,安裝- - 目錄,數據存放目錄,日志存放目錄等
  • 應用包目錄統一標准化,及應用命名標准化
  • 啟動腳本統一目錄和名字,需要變化的部分通過參數傳遞
  • 配置文件標准化,需要變化的部分通過參數傳遞
  • 日志輸出,日志目錄,日志名字標准化
  • 應用生成的數據要實現統一的目錄存放
  • 主機/虛擬機命名標准化,虛擬機管理使用標准化模板
  • 使用docker比較容易實現軟件運行環境的標准化

CMDB實現的四種方式

  • Agent實現方式

KlJbZQ.png

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

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

中控機通過Paramiko(py模塊)登錄到各個服務器上,然后執行命令的方式去獲取各個服務器上的信息

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

KlJXin.png

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'])


免責聲明!

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



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