Probius:一个功能强大的自定义任务系统
断更的这些日子,我又折腾了一个轮子,文末参考源码
大约在一年半以前写过一篇文章『探秘varian:优雅的发布部署程序』,里边有讲到我们采用类似lego的模块化方式来构建CICD的流程,虽能满足我们的需求,但终究需要编写代码,使用成本有点高,不够友好。近段时间终于下定决心将其重构,只为带来更好的使用体验,于是便有了这个项目Probius
Probius为游戏星际争霸里的角色,是一只充满好奇心的星灵探测机,取此名字的意思也是希望用户能够在这个系统中充分发挥想象,借助此系统实现各种自定义的功能,覆盖更多的运维场景
设计思路
Probius由三个关键词构成:命令、模板、任务
命令:为系统中的最小粒度,可以是一个具体的linux命令,或者是一个脚本都可以
模板:模板为一组命令的集合
任务:模板为静态的定义,而任务就是模板的执行,执行一个任务实际上就是去执行了一个模板内的所有命令
整体思想跟varian一样,但不同的是可以仅仅通过web端的配置,就能实现各种各样的功能,下边具体介绍下如何配置的
页面配置
新建命令,在这个页面可以创建命令或者脚本

如果是单纯的命令,直接在命令输入框填写即可,如果是需要执行脚本,则点击脚本之后,会额外多出一个脚本输入框,填写要执行的脚本

理论上不限制脚本的类型,可以是shell、python或者go之类的,前提是系统上有脚本的运行环境,当命令或者脚本有参数的时候可以在参数列写上参数名称,然后在最终执行任务的时候需要传递具体参数的值过来
在命令执行完成后,会根据命令的返回状态也就是$?的值来判断命令是否执行成功,当$?为0是表示执行成功,否则表示执行失败,如果是执行的脚本时,需要在脚本最后明确脚本返回状态,shell脚本可以在脚本执行成功时通过exit指定退出状态,例如
ls /ops-coffee.cn &&\
exit 0 ||\
exit 2
而对于python脚本则可以借助sys.exit这样写
import sys
if 'www' in 'ops-coffee.cn':
sys.exit(0)
else:
sys.exit(3)
其他语言类似
模板的创建分为几步,先创建一个模板

然后给模板添加任务

主要为选择任务、确定执行顺序、选择执行主机以及执行用户,添加完成后可以在模板详情页面看到关联的命令

模板定义了一个完整的任务流程,定义完成后就可以执行任务了,执行任务界面写的比较简单

这界面主要给运维人员使用,定义任务名称、所要执行的模板ID、以及参数,支持定时执行或者周期执行,只需要加上crontab参数即可,除了可以立即执行任务外,还可以将次任务保存为常用任务,后续在常用任务页面可以直接执行

这个功能主要方便其他非运维人员使用本系统,同时也支持针对任务设置权限,可以将权限设置给某个用户组,那么则只有这个组内的成员可以看到并执行任务了

任务执行后可以通过任务历史查看任务执行详情,在这个页面可以清晰的看到任务执行到了哪一步,是成功还是失败

可以点击每一步任务后边的日志查看实时日志输出

写在最后
如果你用过我们开源的一站式DevOps平台CODO的话,会发现这个系统跟CODO的TASK模块非常像,是的没错,这个设计与CODO的TASK如出一辙,但开源的CODO任务模块要更加强大,例如支持分组执行、支持任务重做、支持人工干预等等

TASK的源码在这里:https://github.com/opendevops-cn/codo-task,感兴趣可以自行阅读部署,需要注意的是CODO为微服务架构,单独安装TASK是无法正常运行的,具体部署方法参考官方文档
Probius:一个功能强大的自定义任务系统的更多相关文章
- 整合了一个功能强大完善的OA系统源码,php全开源 界面漂亮美观
整合了一个功能强大完善的OA系统源码,php全开源界面漂亮美观.需要的同学联系Q:930948049
- WebLech是一个功能强大的Web站点下载与镜像工具
WebLech是一个功能强大的Web站点下载与镜像工具.它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为.WebLech有一个功能控制台并采用多线程操作. http://sour ...
- cURL 是一个功能强大的PHP库。
使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并把 ...
- SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件
SuperSwipeRefreshLayout 一个功能强大的自己定义下拉刷新组件. Why? 下拉刷新这样的控件.想必大家用的太多了,比方使用非常多的XListView等. 近期.项目中非常多列表都 ...
- 简单使用Laravel-admin构建一个功能强大的后台管理
Laravel-admin可以快速构建一个功能强大的后台,方便快速开发. 以下内容记录简单使用Laravel-admin,以及遇到小错误的解决方法. Laravel-admin 依赖以下环境 需要提前 ...
- iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流
在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,C ...
- 使用EF+ASP.NET MVC+Bootstrap开发一个功能强大的问卷调查系统
功能简介 支持七大题型 下拉选择题.单选题.多选题.填空题.数字题.问答题.组合/矩阵题(单选组合.多选组合.填空组合.数字组合) 题库支持 每个问卷都要设置姓名.年龄.性别.学历,怎么办?题库帮您轻 ...
- Arduino Tian开发板:一个功能强大的天气预报中心
每天都在出现新的连接设备. Arduino携手云平台一起加入这场战斗,于是出现了一个新的挑战者 - Arduino Tian! 使用python和经典Arduino框架,本教程将引导您将您的Ardui ...
- opentwebst一个ie自动化操作测试软件-功能强大
opentwebst一个ie自动化操作测试软件-功能强大 一个ie自动化操作测试软件,自动根据操作记录脚本.生成vbs,js和其他脚本语言,用来运行 里面包含了两个东西: 1.脚本操作自动记录,记录下 ...
随机推荐
- 非常实用的织梦dede所有标签调用方法大全
关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}">&l ...
- TP5.0登录验证码实现
<div class="loginbox-textbox"> <input class="form-control" placeholder= ...
- PAT 1029 Median (25分) 有序数组合并与防坑指南
题目 Given an increasing sequence S of N integers, the median is the number at the middle position. Fo ...
- SQL查找大小为n的连续区间
数据准备 create table sequence ( seq int not null primary key ); insert into values(3); insert into valu ...
- Pytorch分类和准确性评估--基于FashionMNIST数据集
最近在学习Pytorch v1.3最新版和Tensorflow2.0. 我学习Pytorch的主要途径:莫烦Python和Pytorch 1.3官方文档 ,Pytorch v1.3跟之前的Pytorc ...
- 【asp.net core 系列】 1 带你了解一下asp.net core
0. 前言 这是一个新的系列,名字是<ASP.NET Core 入门到实战>.这个系列主讲ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我们需要的即可,并非主讲).同 ...
- GitHub的raw.githubusercontent.com无法链接
今天在用Github下载是总报错,其中错误一开始是DNS的问题 查资料后得知是DNS污染,之后就先找真实的IP地址,添加进C:\Windows\System32\drivers\etc hosts文件 ...
- Chisel3 - model - when
https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg 介绍创建模块判断逻辑的when命令. 1. when/elsewhen/otherwise ...
- (Java实现) 活动选择
活动选择的类似问题都可以这么写 import java.util.ArrayList; public class huodongxuanze { /** * //算法导论中活动选择问题动态规划求解 * ...
- Java实现 洛谷 P1159 排行榜
输入输出样例 输入 #1 5 HIGHHOPES UP LOWFEELINGS UP UPANDDOWN DOWN IAMSTILLSTANDING DOWN FOOLINGAROUND DOWN 输 ...