CMDB 11.06

  1. 为啥要搞自动化运维?

    """
    IT运维的分类:
    	硬件运维:
    		IDC运维 : 搬机器
    	软件运维:
    		主要是对公司线上的业务进行管理,比如说:对mysql的备份管理,
    		对nginx, apache软件的管理以及配置
    """
    
    	# shell 脚本
    
    """
    传统运维的缺点:
    	excel表格记录服务器的资产非常的麻烦,所以会导致服务器的记录越来越乱
    自动化运维:DevOps
    
    CMDB:自动化运维的一个基石项目
    """
    
    """
    全称:配置管理数据库
    作用:收集服务器的各种信息 (包括收集服务器的内存,硬盘,CPU,IP, 主机名等信息)
    """
    

1.CMDB的四种实现方式

  • Agent 实现方式

https://i-beta.cnblogs.com/albums/edit/1583522

"""
# 执行流程
	1. 在每台服务器上放python脚本, 取得服务器的信息, 通过requests模块发送给API
    2. 服务器设置定时任务(crontab), 定时执行一次
    3. API起一个Django, 接收到数据以后写入数据库
    4. 将数据库的数据通过浏览器展示给用户
    
适用场景: 服务器很多的公司
优点: 速度快
缺点: 需要为每台服务器部署python脚本
"""
import subprocess
res = subprocess.getoutput('ipconfig')
print(res)
  • ssh实现方式(可以通过parmiko, frbric, ansible等方式链接ssh)

    ![CMDB ssh](F:\Mark down学习记录\CMDB ssh.png)

"""
执行流程
    第一步: 由管理员录入资产(主机名,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')
  • saltstack

    ![CMDB saltstack](F:\Mark down学习记录\CMDB saltstack.png)

"""
执行流程:
    第一步: 由管理员录入资产(主机名,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'])
    
    
  • Puppet(ruby语言开发)
# 每隔30分钟,通过RPC消息队列将执行的结果返回给用户

posted @ 2019-11-06 16:10  海森t  阅读(7)  评论(0)    收藏  举报