基于python复制蓝鲸作业平台

本文分享了一个基于Python Django框架自制的代码发布平台开发经历,重点介绍了如何实现自动化作业、执行脚本和作业步骤的设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        去年看武sir代码发布的视频无意中听到了蓝鲸平台但是一直没深究,前一段时间公司要搞一个代码发布平台,但是需求变化很多一直找不到一个很好的参考

        模板,直到试用了一下蓝鲸作业平台发现“一切皆作业”的思想非常好,比如一个简单变更发布:

        1. 对 web 组(3 台机器)停服务

                         在三台机器上执行(/home/tomcat/bin/shutdown.sh)

        2.对web组(3台机器)更新版本文件

                         在三台机器执行(scp xxx yyy),有些公司可能是rsync同步、(git pull)客户端拉取、svn拉取等等。

        3.对web组 (3台机器)启动服务

                         在三台机器上执行(/home/tomcat/bin/startup.sh)

        面对不同的公司不同的变更场景,变更发布无非就是停服务、拉取版本文件、分发版本文件到各个服务器、启动服务。有些场景可能需要再停server应用,有些可能

        用的git或者别的同步,所有这些都可以通过linux命令来操作,将命令封装成脚本也就是原子,不同的原子按照一定的业务场景执行顺序组合成作业,之后的代码发布

        便可以一键完成,换到不同的公司,不同的业务场景无非就是原子执行顺序、执行的机器、执行的原子脚本等等不同而已。

        基于此便准备用python复制一个作业平台,虽然是重复造轮子但更能加深对作业平台的理解。

        整个作业平台开发从技术调研到完成耗时将近3个月,差不多每天利用晚上两个小时和周末时间写点,项目写到一半差点想放弃,因为前端实在是太恶心了,而且项

        目刚写完,存放代码的服务器就挂了,数据完全丢失,真是天灾人祸啊,还好笔记本虚拟机里保留了一份代码和小泽玛利亚的最新作品,要不然真想回机房搬服务器

        去。

 

涉及的技术:

        平台使用python的django框架开发

        异步执行作业使用celery(定时作业也会用到)

        在远程服务器上执行脚本用saltstack的agent(也可以用paramiko、ansible、puppet、自己开发agent等等)

        剩下的就是html、JavaScript、jQuery、css(好恶心)等等

 

思路:

        整个开发刚开始感觉只要理解了蓝鲸作业平台的表结构那么整个平台的思路差不多就清晰了。

        主要是以下几张表:

        nm_account(执行账户):存放在每台机器上执行的账户

1 CREATE TABLE `nm_account` (
2   `account` varchar(255) NOT NULL COMMENT '账户名',
3   `appId` int(11) NOT NULL COMMENT '业务id',
4   `creater` varchar(128) NOT NULL COMMENT '创建人',
5   `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
6   PRIMARY KEY (`account`,`appId`)
7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
View Code

 

        nm_script(执行脚本) :代码发布变更所有需要执行的脚本

        nm_task(作业名称):不同脚步所组合的作业

        nm_step(作业步骤):每一个作业所涉及的脚本执行顺序

        nm_taskInstance(作业实例):每一个作业执行后的历史记录,在作业平台里叫作业实例

        nm_stepInstance(作业实例步骤):每一个作业实例所涉及的脚本执行步骤

        执行机器可以从CMDB里获取,如果公司已有CMDB就可以直接调接口获取服务器信息。

 

总结:

        但凡涉及到人工交互的操作就无法用这种自动化作业完成。

        时间紧没来的及加上定时执行作业,下个版本加上。

        蓝鲸的作业平台执行作业时是实时输出结果的,而saltstack的agent只有在作业完全执行完后才返回结果,对应作业执行时间长的

        用户体验不是很好,还是得自己重新设计开发agent。        

        代码发布还只是项目更新里的一部分,传统的项目变更流程是:

        1.开发更新完项目代码  --> 2.开发发邮件给测试人员进行测试 --> 3.测试通过后需要相关开发、测试、运维的领导发邮件确认  -->

        4.运维收到确认邮件后进行代码发布操作

        有些公司可能走的OA或OA+邮件流程,其实整个就是一套工单系统,开发申请项目更新的工单—>测试人员接到工单后进行测试——>

        运维收到测试通过的工单后进行下一步变更操作。代码发布只是完成最后一步变更的操作,这时候把作业平台里的每个作业加上接口, 

        提供给其它系统调用,比如工单系统,测试人员在测试通过后直接就调用作业的接口执行相关的作业操作,无需运维参与,如果中间还需要

        相关领导审批,那么在领导审批通过之后再调接口执行作业。有点类似敏捷开发。

     

        图省事的话推荐大家用腾讯的蓝鲸平台。   

        https://v.qq.com/x/page/g0175dx1yzf.html

        蓝鲸作业平台操作视频

        http://bbs.bk.tencent.com/forum.php?mod=viewthread&tid=181 

        作业平台介绍

        http://bk.tencent.com/download/

        蓝鲸平台社区版下载

 

我自己的作业平台效果图:

         1.服务器信息(只为作业平台调服务器信息简单写的一个,实在不敢叫CMDB,后期可以从别的CMDB系统里调取)

2.账号信息

3.脚本列表

3.脚本编辑(哈哈,直接复制的蓝鲸的)

4.作业列表

5.编辑作业(执行脚本)

6.编辑作业(文件传送)

7.作业实例列表

8.作业实例步骤

9.作业实例步骤日志

10.作业实例步骤详情

转载于:https://www.cnblogs.com/huangxiaoxue/p/7906746.html

蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现跨系统调度自动化。 ## Benefits ### 安全可靠的高危命令检测能力 作为底层面向服务器OS的原子操作平台,对用户操作指令是否合规、安全的检测至关重要!作业平台支持通过正则表达式设置各种不同脚本语言的高危命令语句检测规则,并且提供被阻拦的操作日志;即便是周边系统通过 API 形式调度执行,也能够被实时检测拦截,让服务器操作更安全! ### 完善的脚本版本管理 云化脚本版本管理模式,贴合现代化开放协同的理念,协作者之间借助平台便捷的共享脚本资源;利用版本管理功能,您可以很好的控制版本的上/下线状态,并能够在出安全漏洞时快速禁用、及时止损! ### 作业编排,一切皆场景 当一个操作场景需要多个步骤串联执行时,如果手工一个个去点击执行,那么效率实在太低了!并且,也没办法很好的沉淀下来,方便后续持续使用和维护。 作业平台作业管理功能很好的解决了这个问题,用户可以在「作业模板」中配置好相应的执行步骤,然后再根据需求场景衍生对应的「执行方案」;如此,即清晰的区分开作业模板和实例的关系,避免强耦合关系,也便于后续对使用场景的管理和维护。 ### 原汁原味的 Cron 定时任务 保留了 Linux 原生的 Crontab 定时任务使用习惯,让运维同仁能够更平滑、快速的上手;更有贴心的监测功能助您发现及时掌握定时任务的动向和执行情况。 ### 高扩展性的文件源管理能力 在文件分发的需求场景中,我们除了从远程服务器、本地文件作为传输源以外,还可能需要从对象存储、FTP、Samba等不同的文件系统/服务获取文件; 为了满足这种多元化的文件源对接诉求,我们开放了文件源插件的能力,支持开发者根据自己的文件系统类型开发插件对接作业平台的文件源管理模块,从而实现从不同文件系统分发的能力。 bk-job 提供了快速执行、任务编排、定时执行等核心服务,多重组合,满足企业不同场景的需求: - **快速执行**:提供临时性且多变的快速一次性操作入口,用完即走 - **任务编排**:对于重复性的操作组合,可以通过编排功能将其沉淀为“作业”,方便管理和使用 - **定时执行**:支持用户按业务逻辑诉求设置周期性或一次性的定期执行计划 - **脚本管理**:将脚本以云化模式统一管理,更好的支持作业编排和周边系统调度的灵活度 - **账号管理**:管理服务器OS的执行账户,如Linux的 root,Windows的 administrator 等等 - **消息通知**:满足业务按管理需求设置任务不同状态的执行结果消息通知 - **文件源管理**:开放文件源对接插件能力,满足从不同文件系统类型拉取文件并传输的诉求 - **运营分析**:提供平台的运营统计数据展示,助力管理员更全方位的了解平台的运行情况 - **平台管理**:丰富的平台管理员工具,包括但不仅限于信息更改、消息渠道设置、高危语句检测规则、功能限制设置、公共脚本管理、后台服务状态展示等等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值