stackstorm workflows
workflows StackStorm支持两种类型的工作流: ActionChain和Mistral。 1) ActionChain是StackStorm内部的不加修饰的工作流运行器。它提供了 一个简单的语法来定义了工作链,一个接一个地运行,将一个动作地输出传递 给另外一个,直到动作链成功或失败。 当你想要快速和简便地时候就使用ActionChain吧。 2) Mistral是一个专用地工作流服务,起源于Openstack,集成到了StackStorm中了。 正是Mistral地帮助,你可以通过嵌套工作流来定义复杂工作流的逻辑, forks, joins,和用于处理,重试,延迟等策略。 当你想要强大的和灵活的工作流就使用Mistral吧。 3) Orquesta是一个新的工作流引擎,专门为StackStorm设计的。 它现在处于公众的beta版本。未来将会取代Action Chain和Mistral。 ActionChain Workflow是Action集合,Workflow能够定义Action的执行顺序和条件,组合一系列Action完成复杂的任务。StackStorm支持2种类型的Workflow,其中ActionChain是StackStorm定义的Action链。 动作链被定义在包中,在 /opt/stackstorm/packs/<pack>/actions/ 目录下。 一个动作链需要两个文件: 一个YAML元数据文件,和用于简单动作相同的作用, 和一个ActionChain定义文件。元数据文件在 <pack>/actions 目录, 而ActionChain定义被放在 <pack>/actions/chains 目录下。 创建ActionChain需要提供元数据文件echochain.meta.yaml: /opt/stackstorm/packs/default/actions/echochain.meta.yaml --- # Action definition metadata name: "echochain" description: "Simple Action Chain workflow" # `runner_type` has value `action-chain` to identify that action is an ActionChain. runner_type: "action-chain" # `entry_point` path to the ActionChain definition file, relative to the pack's action directory. entry_point: "chains/echochain.yaml" enabled: true parameters: skip_notify: default: - c2 notify: on-complete: message: "\"@channel: Action succeeded.\"" routes: - "slack" ActionChain本质也是一种Action,这个ActionChain元数据文件上也是就Action的规格文件,其中runner_type指定为action-chain,entry_point指定的是ActionChain的规则文件echochain.yaml: /opt/stackstorm/packs/default/actions/chains/echochain.yaml --- chain: - name: "c1" ref: "core.local" parameters: cmd: "echo c1" on-success: "c2" on-failure: "c4" - name: "c2" ref: "core.local" parameters: cmd: "echo \"c2: parent exec is {{action_context.parent.execution_id}}.\"" on-success: "c3" on-failure: "c4" - name: "c3" ref: "core.local" parameters: cmd: "echo c3&&exit 1" on-failure: "c4" - name: "c4" ref: "core.local" parameters: cmd: "echo fail c4" default: "c1" 参数详解: chain:是包含动作的数组属性,封装了动作调用 Tasks: 被命名为动作的的执行,并以列表形式指定。名字是在动作链中指定的,并被用于执行一个task。 ref:该属性是一个注册到StackStorm的任务点,这可以在任何pack中。 on-success:是当动作成功执行的时候链接到的任务,如果没有提供,动作链键会以success状态来终止。 on-failuer:是一个可选的链接,可用于当动作执行失败的时候链接到的任务。如果没有提供,动作链将会以error状态来终止。 default: 是一个可选的定义属性,该属性值点明了动作链的起始任务。如果default没有被显示指定,ActionChain会从第一个动作开始指定。 创建ActionChain: cd /opt/stackstorm/packs/default/actions st2 action create echochain.meta.yaml 执行ActionChain: st2 run default.echochain 可以查询子任务的运行情况: st2 execution get 62f8b0ac78884ba53a7c96b4 可以重跑失败的子任务: st2 execution re-run 62f8b0ac78884ba53a7c96b4 如果重命名或者添加参数,需要通过 st2 action update <action.ref> <action.metadata.file> 来更新动作。或者, 通过 st2ctl reload --register-all 将会所所有改变进行再一次加载。