stackstorm 15.编写stackstorm的actionchain

1 actionchain基础


创建一个动作链
动作链被定义在包中,在 /opt/stackstorm/packs/<pack>/actions/ 目录下。
一个动作链需要两个文件: 一个YAML元数据文件,和用于简单动作相同的作用,
和一个ActionChain定义文件。元数据文件在 <pack>/actions 目录,
而ActionChain定义被放在 <pack>/actions/chains 目录下

脚本文件需要包含如下信息:
chain:是包含动作的数组属性,封装了动作调用
Tasks: 被命名为动作的的执行,并以列表形式指定。名字
是在动作链中指定的,并被用于执行一个task。
ref:该属性是一个注册到StackStorm的任务点,这可以在任何pack中。
on-success:是当动作成功执行的时候链接到的任务,如果没有提供,
        动作链键会以success状态来终止。
on-failuer:是一个可选的链接,可用于当动作执行失败的时候链接到的任务。、
        如果没有提供,动作链将会以error状态来终止。
default: 是一个可选的定义属性,该属性值点明了动作链的起始任务。如果default
        没有被显示指定,ActionChain会从第一个动作开始指定。


2 编写actionchain的元数据文件


文件名:
echochain.meta.yaml
内容如下:
name: "echochain"
description: "action chain demo"
runner_type: "action-chain"
entry_point: "chains/echochain.yaml"
enabled: true
parameters:
  skip_notify:
    default:
      - c2
notify:
  on-complete:
    message: "\"@channel: Action succeeded.\""
    routes:
      - "slack"

注意:
    default:
      - c2
-和c2之间有空格

3 编写actionchain的脚本文件


文件名:
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"
      on-failure: "c4"

  -
      name: "c4"
      ref: "core.local"
      parameters:
        cmd: "echo fail c4"

default: "c1"


4 创建actionchain


执行如下命令:
st2 action create echochain.meta.yaml

输出结果如下:
+---------------+----------------------------------------------------+
| Property      | Value                                              |
+---------------+----------------------------------------------------+
| Property      | Value                                              |
+---------------+----------------------------------------------------+
| id            | 5c6547679dc6d60729fc00a7                           |
| name          | echochain                                          |
| pack          | default                                            |
| description   | action chain demo                                  |
| enabled       | True                                               |
| entry_point   | chains/echochain.yaml                              |
| metadata_file |                                                    |
| notify        | {                                                  |
|               |     "on-complete": {                               |
|               |         "routes": [                                |
|               |             "slack"                                |
|               |         ],                                         |
|               |         "message": ""@channel: Action succeeded."" |
|               |     }                                              |
|               | }                                                  |
| output_schema |                                                    |
| parameters    | {                                                  |
|               |     "skip_notify": {                               |
|               |         "default": [                               |
|               |             "c2"                                   |
|               |         ]                                          |
|               |     }                                              |
|               | }                                                  |
| ref           | default.echochain                                  |
| runner_type   | action-chain                                       |
| tags          |                                                    |
| uid           | action:default:echochain                           |
+---------------+----------------------------------------------------+


查看动作链是否生成:
[root@localhost actionchain_demo]# st2 action list|grep echochain
| default.echochain                                  | default  | action chain demo   


5 执行actionchain


执行如下命令:
st2 run default.echochain

输出结果:
..
id: 5c6547d79dc6d60729fc00a9
action.ref: default.echochain
parameters: None
status: succeeded
result_task: c3
result: 
  failed: false
  return_code: 0
  stderr: ''
  stdout: c3
  succeeded: true
start_timestamp: Thu, 14 Feb 2019 10:49:59 UTC
end_timestamp: Thu, 14 Feb 2019 10:50:03 UTC
+--------------------------+------------------------+------+------------+--------------------------+
| id                       | status                 | task | action     | start_timestamp          |
+--------------------------+------------------------+------+------------+--------------------------+
| 5c6547d79dc6d605622a7c50 | succeeded (1s elapsed) | c1   | core.local | Thu, 14 Feb 2019         |
|                          |                        |      |            | 10:49:59 UTC             |
| 5c6547d99dc6d605622a7c52 | succeeded (1s elapsed) | c2   | core.local | Thu, 14 Feb 2019         |
|                          |                        |      |            | 10:50:00 UTC             |
| 5c6547da9dc6d605622a7c54 | succeeded (0s elapsed) | c3   | core.local | Thu, 14 Feb 2019         |
|                          |                        |      |            | 10:50:02 UTC             |
+--------------------------+------------------------+------+------------+--------------------------+

参考:
[1] https://docs.stackstorm.com/actionchain.html

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/87926051