python搭建自动化运维平台,python开发运维系统

大家好,小编为大家解答python 运维开发都需要掌握哪些的问题。很多人还不知道python搭建自动化运维平台,现在让我们一起来看看吧!

Source code download: 本文相关源码

导言

如何基于Python构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长。

此次分享将通过平台具备功能、架构设计、模块定制、安全审计、C/S结构的实现等几个方面内容来展开python画六瓣花代码

为什么选择Python?

几点优势:默认安装且跨平台、可读性好且开发效率高、丰富的第三方库(开发框架、各类API、科学计算、GUI等)、社区活跃&众多开发者。

3d7e0e6225cab856659aec9c868b75ee_b.png

Python在腾讯的现状,根据去年内部提交组件语言统计,除去2、3、4前端技术,Python在高级编程语言中排第3位。应用在系统运维、业务逻辑、运营平台、测试工具、数据挖掘等领域,腾讯大名鼎鼎的“蓝鲸”运维PAAS平台就是基于Python语言来构建。

一、平台介绍

OMServer 一个集中式的Linux集群管理(基础)平台(《Python 技术与最佳实践》书籍实践案例),具备业务集群管理、实时安全审计、功能模块定制、数据加密传输、支持主流Python组件、使用简单且体验好等特点,源码托管地址:https://github.com/yorkoliu/pyauto,读者可以根据企业的需求定制修改及发布。

1、平台截图:

cfd3648ee8f63a0482530c8e3f18a922_b.png

c6533edd7f4b7e9e103db88469f13f30_b.png

2、平台采用到的第三方库:

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

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

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

Mysql - 是一个非常流行的关系型数据库管理系统。

二、平台架构设计

1、 OMServer架构图

49c1e8ed434c84e19e4a52468a060590_b.png

大家对这个架构应该不会感到陌生,三层结构也是目前主流的运营平台架构

2、 架构说明

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

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

2)、第二层:分布式计算层,提供与主控端的连接通道,采用的是rpyc传输协议,协议操作流程:前端模块参数->加密传输->任务执行->返回结果集->解密输出。

3)、第三层:集群管理服务层,整合Python主流的远程操作组件(支持Saltstack、Anaible、Func),对被控端(业务服务器集群)进行管理,其中主控端可以根据不同IDC环境,采用多地多点的管理方式,可提升冗余度及执行效率。主控端操作模块以不同Python文件加以区分,便于维护,可灵活定制操作逻辑及横向扩展等特点。

3、 平台架构优势

1)管理端多机支持,可按不同IDC划分;

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

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

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

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

4、架构操作流程

2edbdec010e7c9c0d9192b56d77114b0_b.png

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

5、整合远程操作Python组件

ad923d2052e77b65661937a3205d2383_b.png

分别两个步骤:

1、提前配置主控端与被控端的信任关系,一般为证书或SSH 认证;

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

三、平台模块定制

1、任务模块定制的思路

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

2)添加模块的步骤:

8a2dad70e13f0d0f73386e20f00f9c18_b.png

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

378a8ec7632a611a6a9870b5b37b7425_b.png

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

e8db992ba99ecc72313e2a1d84836819_b.png

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

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

2、当我们的平台已经具备可定制、扩展操作的能力,运维的核心工作就聚焦以下几点:

1)平台功能改进、升级,需要具备DevOps能力;

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

3)日常工作梳理(标准、流程化建设),更好将原子操作串成流程。

4)系统、业务的调优,服务业务。

四、安全审计的实现

1、 安全审计技术架构

0729de9d7c4ea84618eefc7ed6298c07_b.png

2、Agent上报实现原理

4985bed694dcbfe0d20809300e1a64ab_b.png

实现原理非常简单,通过修改Linux系统环境配置文件/etc/profile,定义history事件相关环境变量,捕捉所有Linux登录用户会话中的操作事件及指令,实时通过OMAudit_agent.py中的HTTP GET CGI向数据库写操作事件流水。

930e33e86c91fe353c5748a062432467_b.png

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

五、C/S结构的实现

1、 OManager桌面版截图

f52e14ae55958cd32ab5a8e9978771dd_b.png

2、OManager桌面版架构

2d5740940e9db4462b1d3de65acd1da2_b.png

桌面版OManager基于Wxpython + XRC构建,为两层结构,一层为桌面客户端,另一层为集群管理端,同时兼容OMServer管理端,通讯依然采用rpyc协议,与OMServer有以下几点区别:

f2fc2fe299f315772d2f9370cba93832_b.png

3、后续优化

1)整合ansible或saltstack高级功能,如ansibleplaybook;

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

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

4)任务对列支持暂停、中止、重运行功能,实现操作可控。

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

本文出自技术分享丨如何基于Python构建一个可扩展的运维自动化平台 - 知乎

转载于:https://blog.51cto.com/ljohn/1904719

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值