CMDB收集资产脚本

我怕爱的太早我们不能终老 提交于 2020-02-20 06:12:32

CMDB概述

自动化运维特性

  • OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件
  • 软件安装标准化,例如JAVA虚拟机,php,nginx,mysql等各类应用需要的软件版本,安装目录,数据存放目录,日志存放目录等
  • 应用包目录统一标准化,及应用命名标准化
  • 启动脚本统一目录和名字,需要变化的部分通过参数传递
  • 配置文件标准化,需要变化的部分通过参数传递
  • 日志输出,日志目录,日志名字标准化
  • 应用生成的数据要实现统一的目录存放
  • 主机/虚拟机命名标准化,虚拟机管理使用标准化模板
  • 使用docker比较容易实现软件运行环境的标准化

CMDB架构

CMDB设计模式

Agent方式

可以将服务器上面的Agent程序作定时任务(crontab),定时将资产信息提交到指定API录入数据库

 

本质上就是在各个服务器上执行subprocess.getoutput()命令,然后将每台机器上执行的结果,返回给主机API,然后主机API收到这些数据之后,放入到数据库中,最终通过web界面展现给用户。

优点:速度快   场景:适合机器多的情况
缺点:每个机器都要部署脚本

SSH方式(paramiko模块)

中控机通过paramiko模块登录到各个服务器上,执行命令获取服务器信息。

import paramiko
        # 创建SSH对象
        ssh = paramiko.SSHClient()
        # 允许连接不在know_hosts文件中的主机
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 连接服务器
        ssh.connect(hostname=self.hostname, port=self.ssh_port, username=self.ssh_user, password=self.ssh_pwd)
        # 执行命令
        stdin, stdout, stderr = ssh.exec_command('df')
        # 获取命令结果
        result = stdout.read()
        # 关闭连接
        ssh.close()
        return result
paramiko
中控机作用:从API拿到要采集的主机列表,通过ssh登录执行命令拿到信息
优点:不用部署
缺点:速度慢  场景:适合机器少的情况

saltstack方式

本质同SSH方式类似

中控机装salt-master,每个机器安装salt-minion
优点: 速度快  场景:已经部署saltstack软件
缺点: 每个机器都要安装软件

1、saltstack的安装与配置

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
安装配置saltstack

 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、执行命令

def __command_salt(self, cmd):
    import subprocess
    cmd1 = "salt '" + self.hostname + "' cmd.run  '" + cmd + "'"
    return subprocess.getoutput(cmd1)

资产采集脚本

 

# 将字符串以模块的方式导入importlib
m = importlib.import_module(module_name)

Gitee码云地址:https://gitee.com/nixindecat/asset_collection

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!