zoukankan      html  css  js  c++  java
  • CMDB收集资产脚本

    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

  • 相关阅读:
    任务26:dotnet watch run 和attach到进程调试
    我心中的ASP.NET Core 新核心对象WebHost(二)
    任务25:IHostEnvironment和 IApplicationLifetime介绍
    跨域之jsonp
    H5之拖拽
    h5学习之表单
    canvas之五角星的绘制
    canvas学习之初级运用
    js中常见继承方式
    this指针的使用场景
  • 原文地址:https://www.cnblogs.com/nixindecat/p/10847046.html
Copyright © 2011-2022 走看看