zoukankan      html  css  js  c++  java
  • CMDB(资产管理系统) day1

    运维自动化最重要的就是标准化一切

    自动化运维则支持以下功能:

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

    而CMDB则是运维工具的数据基础

    CMDB包含的功能
    1.用户管理,记录测试,开发,运维人员的用户表
    2.业务线管理,需要记录业务的详情
    3.项目管理,指定此项目用属于哪条业务线,以及项目详情
    4.应用管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
    5.主机管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
    6.主机变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
    7.网络设备管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
    8.IP管理,IP属于哪个主机,哪个网段, 是否被占用等

    CMDB实现的四种方式:

    1.Agent 

      核心:
        在服务器上部署采集的脚本即可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库
      场景:
        服务器较多的情况

       本质:

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

      优点:
        速度快
      缺点:
        每台机器上都要部署

    2.ssh实现方式(基于Paramiko模块)

     

      核心:
        在中控机上部署paramiko模块/ansible软件,即中控机通过Paramiko(py模块)登录到各个服务器上,然后执行命令的方式去获取各个服务器上的信息
      场景:
        服务机较少的时候

      优点:
        无Agent 
      缺点:
        速度慢

    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()
    

      

    3.saltstack方式

      核心:
        在中控机上安装salt-master, 在待采集的服务器上安装salt-minion,此方案本质上和第二种方案大致是差不多的流程,中控机发送命令给服务器执行。服务器将结果放入另一个队列中,中控机获取将服务信息发送到API进而录入数据库
      场景:
        适用于公司正在使用salt-stack软件

      优点:
        速度快,开发成本低
      缺点:
        依赖于第三方工具

    saltstack的安装和配置:

    1.安装和配置

    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
    """
    

    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'])
    

      

  • 相关阅读:
    【React Native】某个页面禁用物理返回键
    【React Native】DeviceEventEmitter监听通知及带参数传值
    转载【React Native代码】手写验证码倒计时组件
    【React Native】 中设置 APP 名称、应用图标、为安卓添加启动图
    【React Native错误集】* What went wrong: Execution failed for task ':app:installDebug'.
    【React Native错误集】Import fails with "Failed to execute 'ImportScripts' on 'WorkerGlobalScope'"
    【React Native错误集】Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of app
    「React Native笔记」在React的 setState 中操作数组和对象的多种方法(合集)
    【React Native】Error: Attribute application@allowBackup value=(false) from AndroidManifest.xml
    坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/11077595.html
Copyright © 2011-2022 走看看