任务(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",
}
]
}
文档内容是否对您有帮助?