StackStorm分析(四)Mistral说明

本文介绍了StackStorm自动化平台中的Mistral组件,它作为工作流服务,提供灵活的工作流支持。Mistral的关键概念包括Workbook、Workflow、Task和Action。文章还探讨了YAQL和Jinja两种模板解析语法,并通过一系列示例,如mistral-basic、mistral-workbook-basic、mistral-handle-error和mistral-repeat,展示了Mistral的用法和功能。
摘要由CSDN通过智能技术生成

StackStorm介绍

       StackStorm是一个强大的自动化平台,结合DevOpsChatOps,提供可扩展、灵活和健壮的工具链用于应用、服务和工作流的自动化能力。

 



Mistral

       Mistral是Mirantis公司为Openstack开发的工作流组件,提供Workflow as aService。Stackstorm集成了Mistral,提供更加灵活和强大的Workflow支持。

Mistral的一些概念,需要和StackStrom的概念区分开来:

  • Workbook:工作簿。可以理解为工作流任务的文档,纪录了工作流,任务以及任务的执行顺序,依赖关系,以及每个任务的输入输出等。从开发者的角度看,可以认为它是一种工作流任务的文档组织形式,或者命名空间。
  • Workflow:工作流。比Workbook小的单元。描述了任务,动作的执行顺序,依赖关系。一个Workbook可以有多条Workflow,也可以只有一条Workflow。
  • Task:描述Workflow中包含的工作步骤。
  • Action:Mistral中最小的单位,描述了某一个具体的动作,比如执行一个http请求,或者发一个e-mail等等。

 

 

YAQL & Jinja

Mistral中支持的模板解析语法有YAQLJinja,这提供了强大的流程控制和语法支持。下面对比下YAQLJinja:

 

YAQL:

version: '2.0'

 

examples.mistral-branching:

    description: >

        A sample workflow that demonstrates how to use conditions

        to determine which path in the workflow to take.

    type: direct

    input:

        - which

    tasks:

        t1:

            action: core.local

            input:

                cmd: "printf <% $.which %>"

            publish:

                path: <% task(t1).result.stdout %>

            on-success:

                - a: <% $.path = 'a' %>

                - b: <% $.path = 'b' %>

                - c: <% not $.path in list(a, b) %>

        a:

            action: core.local

            input:

                cmd: "echo 'Took path A.'"

            publish:

                stdout: <% task(a).result.stdout %>

        b:

            action: core.local

            input:

                cmd: "echo 'Took path B.'"

            publish:

                stdout: <% task(b).result.stdout %>

        c:

            action: core.local

            input:

                cmd: "echo 'Took path C.'"

            publish:

                stdout: <% task(c).result.stdout %>

 

Jinja

version: '2.0'

 

examples.mistral-jinja-branching:

    description: >

        A sample workflow that demonstrates how to use conditions

        to determine which path in the workflow to take.

    type: direct

    input:

        - which

    tasks:

        t1:

            action: core.local

            input:

                cmd: "echo { { _.which }}"

            publish:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值