StackStorm介绍
StackStorm是一个强大的自动化平台,结合DevOps和ChatOps,提供可扩展、灵活和健壮的工具链用于应用、服务和工作流的自动化能力。
StackStorm核心概念
StackStorm的工作步骤大体如下:
1. StackStorm Sensor感应并触发事件。
2. Rules Engine对事件进行规则匹配,如果匹配产生任务。
3. StackStorm Worker执行任务,一般是调用到外部系统。
4. StackStorm记录审计任务执行的细节。
5.任务执行结果返回给Rules Engine进行进一步处理。
可以看出StackStorm是个以事件驱动的系统,为此抽象出一系列概念来分解事件从产生、触发、规则匹配到执行的整个生命周期事件,具体包含核心概论如下:
Sensor感应器
Sensor是一系列的感应器用于接受或者监测事件,当事件发生的时候,Sensor将会通知Trigger提交事件到StackStorm。
Sensor是Python插件实现,只要实现StackStorm定义的接口,然后配置元数据YAML注册到StackStorm:
--- class_name:"SampleSensor" entry_point:"sample_sensor.py" description:"Sample sensor that emits triggers." trigger_types: - name:"event" description:"An example trigger." payload_schema: type:"object" properties: executed_at: type:"string" format:"date-time" default:"2014-07-30 05:04:24.578325" |
Trigger触发器
Trigger代表事件,一般事件是由外部系统产生,比如监控告警,JIRA问题更新等等,另外也有通用的事件触发器,比如定时器或者WebHook。
在StackStorm系统中,Trigger只是String类型的对象,由Sensor注册,用户可以在Sensor插件自定义新的Trigger。
Action 动作/任务
Action是事件触发后的处理方式,一般是由外部系统执行,包括:
- 重启服务
- 创建云服务
- 发生邮件
- 启动Docker容器
- 制作VM快照
Action可以是通用的执行方式,比如SSH,REST API调用,也能够集成Openstack、Docker/Kubernetes等系统实现。Action Runner是Action的执行环境,StackStorm的内置Action Runner:
Action Runner |
Description |
local-shell-cmd |
This is the local runner. This runner executes a Linux command on the same host where StackStorm components are running. |
local-shell-script |
This is the local runner. Actions are implemented as scripts. They are executed on the same hosts where StackStorm components are running. |
remote-shell-cmd |
This is a remote runner. This runner executes a Linux command on one or more remote hosts provided by the user. |
remote-shell-script |
This is a remote runner. Actions are implemented as scripts. They run on one or more remote hosts provided by the user. |
python-script |
This is a Python runner. Actions are implemented as Python classes with arun method. They run locally on the same machine where |