美文网首页
CMDB介绍及四种实现方式

CMDB介绍及四种实现方式

作者: aq_wzj | 来源:发表于2019-01-08 18:33 被阅读0次

    1. 作用:

    自动帮我们收集服务器的信息, 并记录我们的变更信息

    2. 收集服务器的元数据:

    在实际开发中,收集服务器的信息总共有4种方案:

    方案一: agent方式
    执行流程
        1. 在每台服务器上放python脚本, 取得服务器的信息, 通过requests模块发送给API
        2. 服务器设置定时任务(crontab), 定时执行一次
        3. API起一个Django, 接收到数据以后写入数据库
        4. 将数据库的数据通过浏览器展示给用户
        
    适用场景: 服务器很多的公司
    优点: 速度快
    缺点: 需要为每台服务器部署python脚本
    
    方案二: ssh方式(可以通过parmiko, frbric, ansible等方式链接ssh,以paramiko为例)
    执行流程
        第一步: 由管理员录入资产(主机名,SN等信息),通过后台管理,录入数据库
        第二步: 中控机从数据库获取主机列表
        第三步: 中控机通过paramiko登录到各服务器,执行命令获取服务器的信息, 返回给中控机
        第四步: 将其发送给API,再由API写入数据库
        
    适用场景: 服务器不多的公司
    优点: 不需要部署agent脚本
    缺点: 需要ssh登录, 所以速度慢
    
    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进而录入数据库。

    执行流程:
        第一步: 由管理员录入资产(主机名,SN等信息),通过后台管理,录入数据库
        第二步: salt-master从数据库获取未采集资产信息的服务器
        第三步: salt-master发送命令给salt-minion执行
        第四步: salt-master拿到执行结果
        第五步: 将结果发送给API
        第六步: API将其写入数据库
    
    解释: 
        salt-master可以理解为主人
        salt-minion可以理解为奴隶
    
    适用场景: 之前就在用saltstack的企业
    优点: 速度快, 开发成本低
    缺点: 依赖于第三方工具
    

    saltstack的安装与配置

    1. 安装与配置

      master端:
      1. 安装salt-master
          yum install salt-master
      2. 修改配置文件:vim /etc/salt/master
          interface: 0.0.0.0    # 表示Master的IP 
      3. 启动
          service salt-master start
          
      slave端:
      1. 安装salt-minion
          yum install salt-minion
      2. 修改配置文件 vim /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'])
      
      

      参考安装:
      http://www.cnblogs.com/tim1blog/p/9987313.html
      https://www.jianshu.com/p/84de3e012753

    方式四: Puppet(ruby语言开发)(了解)

    每隔30分钟,通过RPC消息队列将执行的结果返回给用户

    相关文章

      网友评论

          本文标题:CMDB介绍及四种实现方式

          本文链接:https://www.haomeiwen.com/subject/rqmbrqtx.html