实战:基于Python构建运维自动化平台

导语:

今天与你们一块儿探讨如何基于Python构建一个可扩展的运维自动化平台,也但愿能与你们一块儿交流,共同成长。前端

这次分享将经过介绍OMServer、OManager具有的功能、架构设计、模块定制、安全审计、C/S结构的实现等几个方面的内容来展开。linux

为何选择Python?

  • 默认安装且跨平台sql

  • 可读性好且开发效率高数据库

  • 丰富的第三方库(开发框架、各种API、科学计算、GUI等)编程

  • 社区活跃&众多开发者。设计模式

0BaCAPSnJs8Python在腾讯的现状,根据去年内部提交组件语言统计,除去二、三、4前端技术,Python在高级编程语言中排第3位。缓存

应用在系统运维、业务逻辑、运营平台、测试工具、数据挖掘等领域,腾讯大名鼎鼎的“蓝鲸”运维PAAS平台就是基于Python语言来构建的。安全

1、    平台介绍

OMServer 一个集中式的Linux集群管理(基础)平台,具有业务集群管理、实时安全审计、功能模块定制、数据加密传输、支持主流Python组件、使用简单且体验好等特色。服务器

一、平台截图微信

0BaCAik3vea

0BaCAhPa9ia

二、平台采用到的第三方库

Django : 一个开放源代码的Web应用框架,由Python写成,采用了MVC的软件设计模式;

rpyc : 一个 Python 实现的RPC和分布式计算的工具。支持同步和异步操做、回调等;

saltstack 、ansible 、func : 基本Python开发的自动化配置管理与流程控制组件;

Mysql : 是一个很是流行的关系型数据库管理系统。

2、    平台架构设计

一、OMServer架构图

0BaCAfy7l6e

二、架构说明

OMServer平台为三层架构,分别为WEB交互层、分布式计算层、集群管理服务层。

第一层:即为WEB交互层,典型的B/S架构,以供管理员操做的交互平台,也是OMServer的核心,基于Django开发;

第二层:分布式计算层,提供与主控端的链接通道,采用的是rpyc传输协议。

协议操做流程:

前端模块参数->加密传输->任务执行->返回结果集->解密输出。

第三层:集群管理服务层,整合Python主流的远程操做组件(支持Saltstack、Anaible、Func),对被控端(业务服务器集群)进行管理,其中主控端能够根据不一样IDC环境,采用多地多点的管理方式,可提高冗余度及执行效率。

主控端操做模块以不一样Python文件加以区分,便于维护,可灵活定制操做逻辑及横向扩展等特色。

三、平台架构优点

管理端多机支持,可按不一样IDC划分;

安全性高,加密传输、定义私有通信规范(TCP);

支持多种管理客户端接入(WEB、桌面、移动);

调用Python组件的高级特性(Playbook、State);

功能扩展性能力强,模块定制化。

四、架构操做流程

0BaCARxtxHU

上图将三个层次的交互流程进行串连,能够清晰了解OMServer架构的操做流程,结束了传统式直连APP Server的操做,更加规范咱们的操做事件,必定程度能够避误一些潜在的误操做。

五、整合远程操做Python组件

0BaCAQdeNf6

分两步:

  1. 提早配置主控端与被控端的信任关系,通常为证书或SSH 认证;

  2. 经过OMServer主控端封装好的任务模块与API接口,实现定制化的任务下发及执行。

3、    平台模块定制

一、任务模块定制的思路

1)任务模块:即为一个“操做事件”为颗粒的任务,如重载配置、部署缓存服务、中止Nginx服务等原子操做;

2)添加模块的步骤

① 定义任务模块“输入参数”,采用HTML Form元素,能够为输入、下拉、单复选框等元素;

0BaCATXGUim

② 编写后台模块代码,其中执行部分由Saltstack或Ansible的Client_API来实现;

0BaCAWNBets

③ 任务模块核心代码,只须要5行代码就能够实现一个SHELL脚本下发、执行的功能。

0BaCAUrZ08O

3)运行模块的步骤: 选择任务模块 & 操做对象 -> 指定输入参数 -> 运行 -> 返回执行结果。

二、当咱们的平台已经具有可定制、扩展操做的能力,运维的核心工做就聚焦如下几点:

  • 平台功能改进、升级,须要具有DevOps能力;

  • 根据业务运营需求,作任务功能模块的编写的工做;

  • 平常工做梳理(标准、流程化建设),更好将原子操做串成流程;

  • 系统、业务的调优,服务业务。

4、安全审计的实现

一、安全审计技术架构

0BaCAZ6U16u

安全审计功能模块分两部分,一部分为操做事件前台展现,另部分为部署在服务器侧的采集Agent,经过CGI接口上报至数据库存储,可对上报的数据做关键字监控,发现异常能够触发告警。

二、Agent上报实现原理

① 实现原理很是简单,经过修改Linux系统环境配置文件/etc/profile,定义history事件相关环境变量,捕捉全部Linux登陆用户会话中的操做事件及指令,实时经过OMAudit_agent.py中的HTTP GET CGI向数据库写操做事件流水。

0BaCAYa9PMG

② 管理前台页面经过定时刷新,获取最新的操做事件。

0BaCAafm0B6

5、C/S结构的实现

一、OManager桌面版截图

0BaCAeapxMO

二、OManager桌面版架构

0BaCAbhIhaS

三、后续优化

  • 整合ansible或saltstack高级功能,如ansible playbook;

  • 将多个任务模块打包成模板对列,实现原子操做与运维变动流程的结合;

  • 引用任务调度Celery,支持更大并发;

  • 任务对列支持暂停、停止、重运行功能,实现操做可控;

  • 提供与CMDB访问对接,通用性更强。


文章来源:马哥教育 

官方微信:马哥linux运维 

Linux运维学习交流群:537045784

相关文章
相关标签/搜索