基于Python构建可扩展的自动化运维平台主讲:刘天斯(yorkoliu)■个人介绍刘天斯(yorkoliu)个人著作-《Python自动化运维:技术与最佳实践》-《Docker技术与最佳实践》(待出版)腾讯高级工程师负责游戏大数据运维工作荣获2010年度十大杰出IT博客7个开源项目、4个发明专利技术BLOG:Weibo:微信号:yorkoliu■分享提纲平台架构说明平台模块定制安全审计功能C/S结构的实现平台功能介绍■为什么选择Python优势-默认安装且跨平台-可读性好且开发效率高-丰富的第三方库(开发框架、各类API、科学计算、GUI等)Python在腾讯-系统运维-业务逻辑-运营平台-测试工具-数据挖掘等■平台介绍(书籍案例)OMServer一个集中式的Linux集群管理(基础)平台-业务集群管理-实时安全审计-功能模块定制-数据加密传输-支持主流Python组件-使用简单且体验好-代码开源■平台UI–操作模块模块列表结果输出输入参数■平台UI–安全审计安全审计实时跟踪■平台第三方库Django-一个开放源代码的Web应用框架,由Python写成,采用了MVC的软件设计模式rpyc-一个Python实现的RPC和分布式计算的工具。支持同步和异步操作、回调等saltstack、ansible、func-基本Python开发的自动化配置管理与流程控制组件Mysql-是一个非常流行的关系型数据库管理系统■当前内容平台架构说明平台模块定制安全审计功能C/S结构的实现平台功能介绍■平台架构-总览Web交互层分布式计算层集群管理服务层主控端被控端■平台架构–优势管理端多机支持安全性高,加密传输、定义私有通讯规范(TCP)支持多种管理客户端接入(WEB、桌面、移动)调用Python组件的高级特性(Playbook、State)功能扩展性能力强,模块定制化■平台架构–操作流程Omserver(Django)Omserver(:11511)RPYCPythonmoduleAppServer设备初始化模块部署LNMP模块部署Mysql模块重启Tomcat模块同步配置模块……■平台架构–整合Python组件SaltstackAnsibleFuncAppServer证书或SSH认证APIOMserver(0.0.0.0:11511)任务下发■当前内容平台架构说明平台模块定制安全审计功能C/S结构的实现平台功能介绍■模块定制任务模块-一个“操作事件”为颗粒的任务,如重载配置、部署缓存服务等添加模块-定义任务模块“输入参数”,采用HTMLForm元素-编写后台模块代码运行模块-选择任务模块&操作对象-指定输入参数-运行-返回执行结果■模块定制–前端配置输入参数模块ID,与后台模块代码关联■模块定制–后台代码任务模块Mid_1001.pyMid_1002.pyMid_1003.pyMid_1004.py……/ansibleMid_1001.pyMid_1002.pyMid_1003.pyMid_1004.py……/saltstackMid_1001.pyMid_1002.pyMid_1003.pyMid_1004.py……/func主程序加载任务模块■模块定制–后台代码任务模块核心代码■模块定制–后话运维的核心工作-平台功能改进、升级-任务功能模块的编写-日常工作梳理(标准、流程化建设)-系统、业务的调优■当前内容平台架构说明平台模块定制安全审计功能C/S结构的实现平台功能介绍■安全审计架构-总览Web交互层集群代理层■安全审计–主机代理(Agent)/etc/profile192.168.1.21root2014-11-0217:44:13#ping:46#telnet:48#vi/etc/profile192.168.1.21root2014-11-0217:42:22#shutdown-hnow入库MysqlOMAudit_agent.pyhttp_client=httplib.HTTPConnection(192.168.1.20,80,timeout=5)http_client.request(GET,“/omaudit_pull/?history_command=+History&……)■安全审计–前端输出待改进点-与告警平台联动,发现异常操作-Agent上报修改成异步方式■当前内容平台架构说明平台模块定制安全审计功能C/S结构的实现平台功能介绍■平台C/SUI■OManager架构-总览客户端层集群管理层■OMServerVSOManager平台构架三层两层用户交互DjangoWxpython前端模块HTMLXRC(XMLResource)平台升级快速一般安全性一般高响应速度一般快OMServer(B/S)OManager(C/S)■后续优化整合ansible或saltstack高级功能将多个任务模块打包成模板对列引用任务调度Celery,支持更大并发任务对列支持暂停、中止、重运行功能提供与CMDB访问对接Q&A