一、运维自动化几种常见模式
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、
1、NotImplemented 是一个非异常对象,NotImplementedError 是一个异常对象。
2、如果抛出 NotImplemented 会得到 TypeError,因为它不是一个异常。而抛出 NotImplementedError 会正常捕获该异常。
11、