zoukankan      html  css  js  c++  java
  • 运维自动化模式比较

    一、运维自动化几种常见模式

      1、agent模式

        

          注释:该模式主要是将采集客户端数据软件安装在各个服务器上,通过相应的命令吧命令结果发送给API接口

      2、ssh模式

        

        注释:该模式主要是将采集客户端数据软件安装在中控机上,然后在中控机上发送相应的命令到各个服务器上,得到命令的结果返回给API接口,之间主要是通过ssh协议进行的数据传输

      3、saltstack工具

        

        注释:该模式主要是将采集客户端数据软件安装在中控机上,然后在中控机上安装salt-master服务,在各个服务器上安装salt-minion服务,最后在中控机上发送相应的命令到各个服务器上,得到命令的结果返回给API接口,与ssh模式相比,该模式主要是通过消息队列zeroMQ传输数据,比ssh协议传输数据快了数倍

    二、 为什么开发服务器管理系统?
            背景:
                - 原来是用Excel维护服务器资产,samb服务【多个运维人员手动维护】
                - 搭建运维自动化平台【服务器管理】
            
            目标:
                - 硬件资产自动采集
                - API
            
            架构设计:
                - 采集资产【每台服务器上安装的客户端,agent,定时任务每天凌晨2点】
                - API【入库和比较创建变更日志】
                - 后台管理部分

    三、设计一个服务器管理系统

      1、服务器管理系统整体框架

     ··   

      注释:图一为客户端采集数据软件框架,bin目录主要是存放启动文件,conf目录主要是存放用户配置文件,lib目录下主要是存放系统默认配置文件,其中lib目录下的config目录下的global_settings主要是存放系统默认配置文件,而__init__文件主要是先读取系统默认配置文件然后再读取用户配置文件,log目录主要是存放软件程序错误日志的,src目录下的plugins目录下的__init__文件主要是对用户配置文件进行读取然后处理对应的命令,而plugins下其余的文件主要是存放相关命令。

     四、在服务器管理系统中用到的牛逼操作

      1、os.environ命令设置和获取系统环境变量

        1、设置系统环境变量
          1、os.environ['环境变量名称']='环境变量值' #其中key和value均为string类型
          2、os.putenv('环境变量名称', '环境变量值')
        2、获取系统环境变量
          1、os.environ['环境变量名称']
          2、os.getenv('环境变量名称')

      2、Python中反射应用

        1、obj=getattr(x,y) #获取x对象内的y属性的值

        2、obj=hasattr(x,y)   #检测x对象内是否有y属性的值

        3、obj=setattr(x,y,z) #设置x对象内y属性对应的z值,就是给y赋值为z

        4、obj=delattr (x,y)   #删除x对象下的y属性的值

        getattr、hasattr、setattr、delattr  获取成员、检查成员、设置成员、删除成员下面逐一介绍先看例子

      3、dir()内置函数

        1、dir(x)  #用dir()函数可以查看对像内所有属于及方法

      4、importlib.import_module()模块

        1、importlib.import_module(x) #x为一个路径字符串,可以通用传入一个字符串路径来引入一个模块

      5、字符串分割

        1、v.rsplit('.', maxsplit=1)     #v作为一个字符串,从右边开始通过"."分割,把字符串分割到第一个分隔符

      6、import subprocess模块

        1、subprocess.getoutput(cmd)  #该模块是通过Python来执行linux或者是windows命令

      7、import paramiko模块

        1、import paramiko#该模块是调用Python中的ssh方法

      8、装饰器

        1、@classmethod  #该装饰器的作用是创建类方法只能让类使用而对象不能使用(类方法)

      9、@staticmethod  静态方法

      10、NotImplemented 和 NotImplementedError 区别

        1、NotImplemented 是一个非异常对象,NotImplementedError 是一个异常对象。

        2、如果抛出 NotImplemented 会得到 TypeError,因为它不是一个异常。而抛出 NotImplementedError 会正常捕获该异常。

      11、

        

  • 相关阅读:
    Ext.Net中,文件下载。
    Ext.Net中,DataView数据绑定之使用技巧。
    Ext.Net控件,简单案例1,让我们从Hello World开始,走进Ext.Net控件的世界!。
    VSCode入门设置成中文
    S2T40,第四章,简答4
    MongoDB学习笔记三:查询
    初等数论学习笔记一:整除的概念与带余除法
    MongoDB学习笔记四:索引
    初等数论学习笔记二:最大公因数与辗转相除法
    MongoDB学习笔记二:创建、更新及删除文档
  • 原文地址:https://www.cnblogs.com/xuanan/p/7599322.html
Copyright © 2011-2022 走看看