• 幕客老师召集小伙伴
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

让Devops的基石落地,让自动化解放双手

 各位大家好,我是Jeson,今天我要写一篇文章来总结下我们的Devops工作历程。

        两年前差不多这个时候,也是我刚入公司之时,就开始构思了Devops该如何真正实践落地。在08年年初,我们的团队由“运维组”变更为"技术支撑组"。无论是从技术人员结构上还是理念上,我们都逐步更为重点的引入开发的元素。

       当然,我认为只是单一的注重开发是不够的,如何将运维和开发真正的结合才是更为重要的。为此,在两年的时间里,技术上,我们需要不断的补充提高,团队内部也为此广泛的展开讨论和PK。

      那么,我们认为Devops能成功落地关键的第一步是对于资产的管理和自动化任务无缝对接。这两个大的模块可以说是Devops构建的基石。

 

 

所以,对于资产管理、自动化任务执行 两个核心模块,两年的时期中我们经历了如下的几个阶段:

 

第一阶段简述:

    第一阶段对于资产的管理,使用wiki、表格的方式记录,如果资产发生变更,变更表格同步到wiki中的方式。

    自动化任务执行,主要基于脚本批量实现对于机器组的管理,如下:

    checkhost 机器组名 "ls /tmp"

这样就完成对于指定机器组的执行命令。

 

第二阶段简述:

    相比第一阶段,第二阶段实现一套整体的devops平台,它结合自动化的方式进行对资产的收集,采用约定的方式实现了前后台任务的接口调用,实现了资产收集、资产确定、资产任务发送、任务的执行日志、权限体系设计等多个环境打通和部分难点技术的攻克。

(1)资产管理

 

(2)自动化任务

    自动化任务采用基于python3.2+django1.9+ansible2.4 完成

这版本的代码已经开源并开放到github,这里我就不作介绍了,大家可以访问下我们的github或者点击文章的阅读原文:

https://github.com/iopsgroup/imoocc

 

第三阶段、POPS工程诞生:

        虽然在第二阶段完成流程和功能上的打通,但还是存在代码效率、功能设计、UI界面谁就等众多需要提高的地方,接下来这篇文章里,我会在功能上作一些介绍和技术使用的讲解。

 

好了,这版本的POPS系统,我们先从整体的界面效果来看下:

 

部分一、首页整体设计

 

 

(1)用户认证,采用了两级用户(分为超级管理员用户、普通成员用户),超级管理员认证采用Django的xadmin模块认证,普通成员用户打通了企业微信接口认证,大家看到入上图的T1小圆圈,里边展示的信息就是通过企业微信拉取到信息。权限等级上,超级管理员可以通过后台录入普通成员权限信息、录入自动化探测配置信息等等。

(2)支持多机房的架构设计,同样,大家看到上图中的T2小圈圈,POPS这套架构可以支持多个机房部署(只需要简单的配置即可),前台展示只需要点击机房切换。

(3)UI界面展示(上图T3)小圈圈,整体展示,更加的直观,更复合技术人员的查找需求。通过类别和形象可视化的展示,可以很快速获取到想要获取资产信息。

 

部分二、搜索部分

 

(1)搜索结果分块展示,这个功能仿照了阿里云搜索的展示效果,见上图“S1”小圈圈,这个全局搜索的功能展示分成多个tab栏目展示,用户能通过搜索在海量的数据中,通过不同的类别就能找到结果。

(2)支持多种搜索的类型及合理的索引查找设计,如上图S2小圈圈,既可以支持对于特定类别搜索,也可以全选搜索。Mysql的数据部分采用django+whoosh实现,并且自动结合django的信号量作增量化更新。这样用户搜索的数据基本上是时时能展现的。另外,设备日志和用户事件日志,采用mongodb存储,这样的方式,是的对于事件这些信息存取和遍历,性能上更为快捷。

 

部分三、自动化任务执行

 

 

自动化任务执行这部分功能,之前我对比了界内同样开源出来的系统,相比之下,我认为这块我们很多的想法设计更加科学和前沿。

 

首先、基本功能上可以分为"新建任务"、"执行历史"、"定时任务管理"三个部分,别看这三个功能少,实现上可是费了很多心思。如:资产定时扫描,就可以作为管理员的定时任务生产,我们可以通过自动化任务的方式实现定时或者时时的资产扫描,所以,在多个功能的结合上,相互独立但却可以相互关联使用的。

 

然后,自动化任务设计模式,这个功能也是一样,POPS系统中我们继续使用了ansible的ad-hoc、playbook两种任务方式,但是加入了我们自己封装的shell script模块,和管理员任务模块,shell script模块是基于python3.6新出的asyncio携程工作方式,对比ansible的执行方式,这种方式采用了协程机制,运行效率很明显的优于老的模式。

还有一个地方就是自动化任务,我们更加注重异步架构设计,采用celery+rabbimq使得自动化任务的执行效率更高,而且更为满足我们的自动化场景功能。

 

最后一个,就是plan的方案保存设计,我们可以把每一个次的执行当成一个方案来作,而且方案是可以保存的(如上图的A4部分)。这样既可以使得技术人员不必重复的造轮子,也可以实现对于人员具体操作的方案追踪,如果想查找事件时候,只需要关联下对应的方案就可以一目了然了。

 

 

文章总结:

     POPS这套工程,一共3个人,用时两个月周期调研并开发完成。此文中只介绍了几个功能,我觉得还有很多可以分享的,尤其是后台技术具体实现部分,相信这些都会是很棒的内容,接下来我会持续总结,如果有机会我也会选择出课分享。目前我们已经让之前的设定的想法,按计划去实现了Devops基石的落地,后续也将在工作中展开延续。

 

最后,个人感谢:

@组内兄弟们 虽然你们不一定能看到我这篇文章,但感谢两年你们的支持和付出,让团队工作能有声有色,和你们在一起我学习到了很多并且在次过程中非常收益。希望还有机会能再聚,一起协作作出更多有意思、有意义的工作。

 

让Devops的基石落地,让自动化解放双手

Pingbacks已打开。

引用地址

暂无评论

发表评论