ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

stackstorm workflows

2022-08-15 00:31:45  阅读:223  来源: 互联网

标签:动作 default stackstorm ActionChain workflows Action action echochain


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 将会所所有改变进行再一次加载。

 

标签:动作,default,stackstorm,ActionChain,workflows,Action,action,echochain
来源: https://www.cnblogs.com/skyzy/p/16586798.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有