请及时关注"编程派 (微信 ID:codingpy)"公众号,并置顶公众号,以免错过各种干货满满的原创文章。
Python 是构建自动化运维平台的强大工具。腾讯运维专家刘天斯曾在公众平台分享过此话题,编程派经作者许可在此分享给感兴趣的朋友。
本文约 3631 字,读完可能需要 5 分钟。
刘天斯
从事互联网运维工作已13年,目前就职于腾讯-互动娱乐部,负责游戏大数据的运营,曾就职于天涯社区,担任首席架构师/系统管理员。
个人著作:《 Python 自动化运维:技术与最佳实践》、《 Docker 技术与最佳实践》(8月出版);7个开源项目、4个发明专利。
导语:
今天受 Reboot 聊运维自动化的议题,与大家一起探讨如何基于 Python 构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长。
此次分享将通过介绍OMServer、OManager具备的功能、架构设计、模块定制、安全审计、C/S结构的实现等几个方面的内容来展开,两个平台也是《Python自动化运维:技术与最佳实践》的案例介绍。
为什么选择 Python ?
点击可查看高清大图
Python 在腾讯的现状,根据去年内部提交组件语言统计,除去2、3、4前端技术, Python 在高级编程语言中排第3位。
应用在系统运维、业务逻辑、运营平台、测试工具、数据挖掘等领域,腾讯大名鼎鼎的"蓝鲸"运维 PAAS 平台就是基于 Python 语言来构建的。
一、 平台介绍
OMServer 一个集中式的 Linux 集群管理(基础)平台,具备业务集群管理、实时安全审计、功能模块定制、数据加密传输、支持主流 Python 组件、使用简单且体验好等特点。
源码托管地址:
读者可以根据企业的需求定制修改及发布。
1、平台截图
点击可查看高清大图
点击可查看高清大图
2、平台采用到的第三方库
Django : 一个开放源代码的 Web 应用框架,由 Python 写成,采用了 MVC 的软件设计模式;
rpyc : 一个 Python 实现的 RPC 和分布式计算的工具。支持同步和异步操作、回调等;
saltstack 、 ansible 、 func : 基本 Python 开发的自动化配置管理与流程控制组件;
Mysql : 是一个非常流行的关系型数据库管理系统。
二、 平台架构设计 1、 OMServer 架构图
2、架构说明
OMServer 平台为三层架构,分别为 WEB 交互层、分布式计算层、集群管理服务层。
第一层:即为WEB交互层,典型的B/S架构,以供管理员操作的交互平台,也是OMServer的核心,基于Django开发;
第二层:分布式计算层,提供与主控端的连接通道,采用的是 rpyc 传输协议。
协议操作流程:
前端模块参数 > 加密传输 > 任务执行 > 返回结果集 > 解密输出。
第三层:集群管理服务层,整合 Python 主流的远程操作组件(支持 Saltstack 、 Anaible 、 Func ),对被控端(业务服务器集群)进行管理,其中主控端可以根据不同 IDC 环境,采用多地多点的管理方式,可提升冗余度及执行效率。
主控端操作模块以不同 Python 文件加以区分,便于维护,可灵活定制操作逻辑及横向扩展等特点。
3、平台架构优势
管理端多机支持,可按不同 IDC 划分;
安全性高,加密传输、定义私有通讯规范( TCP );
支持多种管理客户端接入( WEB 、桌面、移动);
调用 Python 组件的高级特性( Playbook 、 State );
功能扩展性能力强,模块定制化。
4、架构操作流程
上图将三个层次的交互流程进行串连,可以清晰了解 OMServer 架构的操作流程,结束了传统式直连 APP Server 的操作,更加规范我们的操作事件,一定程度可以避误一些潜在的误操作。
5、整合远程操作 Python 组件
分两步:
提前配置主控端与被控端的信任关系,一般为证书或 SSH 认证;
通过 OMServer 主控端封装好的任务模块与 API 接口,实现定制化的任务下发及执行。
三、 平台模块定制 1、任务模块定制的思路
1)任务模块:即为一个"操作事件"为颗粒的任务,如重载配置、部署缓存服务、停止 Nginx 服务等原子操作;
2)添加模块的步骤:
定义任务模块"输入参数",采用 HTML Form 元素,可以为输入、下拉、单复选框等元素;
点击可查看高清大图
编写后台模块代码,其中执行部分由 Saltstack 或 Ansible 的 Client_API 来实现;
点击可查看高清大图
任务模块核心代码,只需要5行代码就可以实现一个 SHELL 脚本下发、执行的功能。
点击可查看高清大图
3)运行模块的步骤: 选择任务模块 & 操作对象 -> 指定输入参数 -> 运行 -> 返回执行结果。
2、当我们的平台已经具备可定制、扩展操作的能力,运维的核心工作就聚焦以下几点:
四、安全审计的实现 1、安全审计技术架构
安全审计功能模块分两部分,一部分为操作事件前台展示,另部分为部署在服务器侧的采集 Agent ,通过 CGI 接口上报至数据库存储,可对上报的数据作关键字监控,发现异常可以触发告警。
2、 Agent 上报实现原理
实现原理非常简单,通过修改Linux系统环境配置文件/etc/profile,定义history事件相关环境变量,捕捉所有Linux登录用户会话中的操作事件及指令,实时通过OMAudit_agent.py中的HTTP GET CGI 向数据库写操作事件流水。
点击可查看高清大图
管理前台页面通过定时刷新,获取最新的操作事件。
点击可查看高清大图
五、C/S结构的实现 1、 OManager 桌面版截图
2、 OManager 桌面版架构
桌面版OManager基于Wxpython + XRC构建,为两层结构,一层为桌面客户端,另一层为集群管理端,同时兼容OMServer管理端,通讯依然采用rpyc协议,与OMServer有以下几点区别:
3、后续优化
今天的分享至此为止,欢迎大家提问。
暂无评论内容