• CMDB-实现的几种方式


    CMDB的用处:收集服务器的元信息,实现自动化运作和监控

    CMDB的实现方案有4中(业内常见的)

    重要:以下的所有方案首先都需要运维把服务器的主机名和SN号录入到后台,这样开发才能去写脚本

    第一种实现方案 agent  # 客户端的方式,适用于大公司

    缺点:每一台服务器都要放agent脚本,每次加入新的服务器,就要部署一次

    流程:

    1、采集服务器信息

    2、POST数据到API

    3、API将数据保存到数据库

    4、将数据进行 web展示 

    PS:每一台服务器都有一个agent脚本,有多少台服务器就有多少个脚本,脚本内的代码是一样的

    运用subprocess模块执行命令

    import subprocess

    '''agent脚本的核心代码'''

    # 对本机传入命令,并执行
    res = subprocess.getoutput('ipconfig')

    # 执行的结果是一个字符串格式
    print(res)

    # 根据需求对结果切片取值
    ipinfo = res[30:50]

    # 获取的值
    print(ipinfo)

    '''最后将获取到的值发送到数据库'''
    reuqests.post('API url',data={'ipinfo':ipinfo})

    第二种方式 SSH类的方式  # 适用于服务器1000台内的公司

    通过paramiko模块实现  # fabric和ansible是已经开发成型的软件,可以直接使用 

    缺点:需要多增加一台中控机,比较耗费网络资源

    流程:

    1、中控机登陆每台服务器采集信息

    2、POST数据到API

    3、API将数据保存到数据库

    4、将数据进行web展示

    '''SSH类的方式'''

    import paramiko # 实现ssh功能的模块
    import requests

    ssh = paramiko.SSHClient() # 实例化对象

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts文件中的主机

    ssh.connect(hostname='192.168.6.202',port=22,username='root',password='111111') # 连接主机

    '''linux用命令安装软件的时候,会询问y/n,这个stdin就是用来接收输入y还是n,stuout命令执行后的结果,是一个管道,需要用read函数读取,stderr执行错误信息'''
    stdin,stdout,stderr = ssh.exec_command('pwd') # 向服务器执行命令

    result = stdout.read().decode('utf-8) # 返回的结果是bytes格式的,所以要解码成指定的字符编码

    print(result)

    ssh.close()

    # 这个程序就是将结果发送到api接口
    requests.post('API url',data={'result':result})

    第三种方式 saltstack # 适用于已经使用这种方式的公司和初创公司

    PS:这种方式需要在中控机上安装salt-master 主机,服务器上安装minion

    流程:

    1、下发命令采集服务器信息

    2、POST数据到API

    3、API将数据保存到数据库

    4、将数据进行web展示

    master端的安装配置 # 这是装在中控机上的

    1、yum install salt-master # 安装

    2、vim /etc/salt/master # 进入文件修改

    3、修改 master文件内的interface的ip地址为中控机(本机)的地址

    4、systemctl start salt-master  # 启动服务

    5、systemctl status salt-master  # 查看进程有没有启动

    6、salt '*' cmd.run ‘ifconfig’  # *代表向所有的minion发送指令,*也可以输入指定的主机名

    7、salt-key -L  # 查看已授权和未授权的minion

    8、salt-key -h # 查看指令

    9、salt-key -A # 所有的minion物理机全都接收

    minion端的安装配置 # 安装在每台被采集的服务器上

    1、yum install salt-minion -y

    2、vim /etc/salt/minion # 修改配置文件的

    3、master: master 地址  # (中控机)的地址,如果有多个master可以填写多条master地址

    random_master:True  # 这个就是在多个master的时候开启后程序可以随机选择master并发送数据给选择的master

    4、systemctl start salt-minion # 启动服务

    PS:实现原理就是用了两个队列

    Python操作saltstack

    基于API的方式

    import salt.client

    local = salt.client.LocalClient()

    result = local.cmd('minion的hostname名','cmd.run',['ifconfig']) # 向指定的minion发送指令,命令放入列表,可以是多个

    第四种方式 # 这种方式现在已经基本不会使用

    puppet使用 Ruby语言写的

  • 相关阅读:
    内存溢出和内存泄漏的区别
    测试管理三要素(人员、过程和技术)
    面试可提问的6个问题
    弱网测试(二)
    js捕获错误
    TortoiseGit自动记住用户名密码的方法
    win7 "com surrogate“ 已停止工作的解决办法
    仿百度图片毛玻璃效果
    毛玻璃效果
    vimium快捷键列表
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10748995.html
Copyright © 2020-2023  润新知