谈自动化运维平台(10.11)
在项目上线完成后,业务系统或平台自然就转入了运维管控期,而在运维期两个重点,一个就是运维流程的标准化和规范化,另外一个就是运维工作本身的自动化。对于运维自动化将成为后续我重点关注的一个内容,因为本身我们DevOps实践也需要这方面的积累。
对于运维自动化,传统我们可能是编写自动化的运维脚本,然后是手工或定时的执行运维脚本完成整个自动化执行过程和运维例行检查。而今天要谈自动化运维平台,里面一个重点就是基于我们面对的运维场景,如何将运维操作或任务进行细粒度分解,然后再对运维操作进行组合和编排。
为何要这样做?重点就是将整个运维流程可视化掉,能够看到分步骤分任务的执行,并快速定位执行中问题。
蓝鲸开源标准运维平台介绍 : https://gitee.com/Tencent-BlueKing/bk-sops
蓝鲸标准运维平台是拥有可视化的图形界面,并进行任务流程编排和执行的系统。
标准运维有两大核心服务。一个是调度编排服务:基于蓝鲸集成平台服务总线(ESB)对接企业内部各个系统API的能力,将企业内部多系统间的工作整合到一个流程模版中,实现一键自动化调度。另一个是自助化服务:标准运维通过与蓝鲸集成平台深度整合,为用户提供了“轻应用”和“职能化”功能,让用户可以将业务日常的运维工作交给产品和职能化人员执行,实现业务的发布、变更等工作自助化。
标准运维后台使用 Python 作为开发语言,使用 Django 开发框架;前端使用 Vue 开发页面,使用 jQuery 开发标准插件,通过配置式的开发模式, 不断降低用户开发标准插件前端表单的难度。
标准运维的产品结构如图所示,接入层包含权限控制、API接口和数据统计等;任务管理层主要对应标准运维的任务编排和任务控制功能,任务编排包含基础单元标准插件框架和标准插件展示层,任务控制包括创建任务实例的模板校验和参数校验,以及任务实例执行时给用户提供的操作接口如暂停、继续、撤销任务等;流程引擎负责解析上层的任务实例,映射节点标准插件对应的服务,并通过底层的蓝鲸服务总线(ESB)调用其他系统的API(如配置平台的创建集群,作业平台的快速执行脚本等),流程引擎还包括了具体的任务执行引擎和流程控制、上下文管理等模块。( 注意,这里的整个架构设计实际和SOA的思想很类型,下面是可以复用的原子即服务API接口,上层运维流程基于服务编排和流程编排的思路对底层服务进行组合和编排完成一个完整的运维流程,而实际我们在做服务编排的时候完全可以参考该思路实现。 )
该标准运维平台的功能特点描述如下:
多元接入支持:标准运维对接了蓝鲸通知、作业平台、配置平台等服务
可视化流程编排:通过拖拽方式组合标准插件节点到一个流程模板。
多种流程模式:支持标准插件节点的串行、并行,支持子流程,可以根据全局参数自动选择分支执行
参数引擎:支持参数共享,支持参数替换。
可交互的任务执行:任务执行中可以随时暂停、继续、撤销,节点失败后可以重试、跳过。
通用权限管理:通过配置平台同步业务角色,支持流程模板的使用权限控制。
插件开发:作为官方标准插件库提供服务,还支持用户自定义接入企业内部系统,定制开发标准插件
该标准运维平台基本是开源的,有时间的可以下载并安装验证,通过前面的介绍我们也可以看到是一个很灵活并可扩展的运维管理平台。对于我们日常的应用程序部署,应用日常巡检,定时的数据采集,数据库操作的Job编排等完全都可以用该管理平台来进行管理,并做到端到端运维流程的可视化监控。
我们举例来说下一个简单额应用部署功能,即涉及到服务器集群服务停止,已有部署包备份,关键数据库数据备份,新应用部署,服务重启,重启后验证检查等拆分操作步骤。而我们既可以将这些操作步骤组合并可视化涉及在一个标准的产品版本发布流程里面进行管理和执行。这些都将大大提升我们运维管理的标准化和效率。
开源运维自动化平台 OpenDevops
OpenDevops是一款为用户提供企业多混合云、自动化运维、完全开源的云管理平台。前端基于Vue iview开发、为用户提供友好的操作界面,增强用户体验。后端基于Python Tornado开发,其优势为轻量、简洁清晰、异步非阻塞。
OpenDevops开源多云管理平台将为用户提供多功能:ITSM、基于RBAC权限系统、Web Terminnal登陆日志审计、录像回放、强大的作业调度系统、CMDB、监控报警系统、DNS管理、配置中心等。
产品介绍 https://www.oschina.net/p/opendevops
文档中心 http://docs.opendevops.cn/zh/latest/
从基本的文档介绍材料看,其很好的实现的企业多混合云的管理,同时实现关键的IT资产,资源管理,基本的ITSM里面的配置管理。同时实现任务管理和作业调度,支持各类脚本,ssh命令的接入和配置。但是没有类似蓝鲸标准运维平台提供可视化的作业编排能力。
从产品介绍来看,该平台由一个小团队维护持续在进行版本迭代,采用微服务的理念构建,模块化开发,目前已有资产管理、定时任务、任务调度、配置中心、域名管理、运维工具几大模块,支持持续集成、持续部署、代码审查、数据库审核与优化建议等众多功能,覆盖大部分的运维场景。因此也纳入我们后续的验证和试用计划中。