任务(Task)

任务(Task)是模板中最重要的组成部分,它定义了每一个具体的运维操作,每一个任务的类型叫做动作。OOS提供了非常丰富的动作供您使用,这些动作包括了一些常见的云产品动作,如ECS,RDS等。如您需要其他云产品常见动作但是OOS暂未提供,您可以联系我们并提供使用场景,另外还可以使用原子动作自行编写,以便您能够立即进行系统运维管理和执行。

通用属性

任务在模板中的语法如下:

  • YAML格式

Tasks:
  - Name: TaskName1 # 必填,任务名称,有效字符为[a-zA-Z0-9_-],即英文字母数字下划线中划线,长度限制200个字符。建议使用驼峰式命名,如StartInstance。
    When: Condition1 # 选填,通过对某条件判断,确定是否执行该任务,当条件结果为true时执行该任务;当条件结果为false时,忽略该任务并向下执行。
    Action: TaskType # 必填,任务类型(也叫动作),请参考动作相关的文档。
    Description: description # 可选,描述,描述当前任务的用途。
    Properties: # 根据所使用的动作不同,具体的属性列表不同,请参考动作相关的文档。
      Property1: Value1 # 动作所依赖的属性和值。
      Property2: Value2 # 当Property为Parameters时,则此处的传入参数名称定义参考原OpenApi。若原OpenApi所需参数中不含有“.”,则此处命名则为原参数名;若原OpenApi所需参数中含有“.”且不是Tag相关的,则参数命名时去除“.”,比如ModifyInstanceSpec Api中Temporary.InternetMaxBandwidthOut参数,则在此处的参数命名为TemporaryInternetMaxBandwidthOut;若原OpenApi所需参数中含有“.”是Tag相关的,则参数命名时,参数命名为Tags,形如 "Tags": [{"Key": tagKey1,"Value": tagValue1 }]。
    Outputs:  # 当前任务的输出参数,可以用作后续任务的输入或模板的输出。
      outputParameterName1:
        Type: # 可选,表示对输出参数类型的声明,支持的基本类型有String, Number, Boolean, List,Json,默认String。注意:outputParameterName1的输出值会按照该处的声明类型Type对ValueSelector筛选结果进行包装来生成。当Type为List时,ValueSelector的筛选结果会被放到 [] 中输出,比如筛选结果为"i-12345zxcv",那么最终输出的值则会是["i-12345zxcv"];当Type为非List类型时,ValueSelector的筛选结果会直接作为输出值。比如Type为String,筛选结果为"i-12345zxcv",那么最终输出值就是"i-12345zxcv"。
        ValueSelector: "jq selector" # 如Task是一个OpenAPI调用时,把OpenAPI的调用结果当做一个JSON输入,应用jq从该JSON中截取所需要的值,请参考云产品动作和公共模板等具体例子。
    # 流程控制参数
    OnError: "ACS::END/ACS::NEXT/other-task-name" # 可选,定义了当前任务执行出现错误时的执行流程,默认:END,即终止整个执行。
    OnSuccess: "ACS::NEXT/other-task-name/ACS::END" # 可选,定义了当前任务执行成功后的执行流程,默认:NEXT,即下一个任务。
  • JSON格式(请参考YAML注释说明)

{
  "Tasks": [
    {
      "Name": "TaskName1",
      "Action": "TaskType",
      "When": "Condition",
      "Description": "description",
      "Properties": {
        "Property1": "Value1",
        "Property2": "Value2"
      },
      "Outputs": {
        "outputParameterName1": {
          "Type": null,
          "ValueSelector": "jq selector"
        }
      },
      "OnError": "ACS::END/ACS::NEXT/other-task-name",
      "OnSuccess": "ACS::NEXT/other-task-name/ACS::END",
    }
  ]
}