模板输出(Output)

除了模板中的每个任务可以有输出,模板也是可以有输出的,其可用来呈现模板执行成功后得到的重要数据。另外若该模板作为子模板被嵌套时,父模板中嵌套该子模板的任务可以通过定义其任务输出参数来对子模板的输出进行引用,具体是通过ValueSelector筛选子模板的输出参数名,以此获得子模板的输出值,而此值则会作为任务输出参数的值,这样父模板的其他任务就可以通过引用嵌套任务的输出参数来达到对子模板输出的引用。

例如,A模板的任务有创建ECS实例的运维操作,且A模板的输出是被成功创建的ECS实例ID,那么查看A模板执行结果时则很方便就能看到模板输出的ECS实例ID,假设A模板被B模板作为子模板嵌套使用了,且B模板任务一是对A模板的嵌套任务,B模板任务二是对被嵌套A模板输出的所有ECS实例ID进行重启,那么此时A模板的输出首先会被B模板的任务一的输出参数筛选得到,然后任务二再引用任务一的输出的参数从而获得ECS实例ID。

语法

模板输出的值可以是模板内所有可被引用的参数的值。任务的输出参数、伪参数以及模板Parameters部分定义的参数,它们的值均可被模板输出参数引用并作为模板的输出值。

单个输出:

  • YAML语法

Outputs:
  OutputParameterName: # 必填,参数名,有效字符为[a-zA-Z0-9_-],即英文半角字母数字下划线中划线,长度限制200个字符。
    Type: String # 可选,YAML, JSON格式支持的基本类型String, Number, Boolean, List(Array),Object,默认String。
    Value: "{{ TaskName.OutputParameterName }}" # 必填,参数值,通常为某个任务的输出。
  • JSON格式(请参考YAML注释说明)

{
  "Outputs": {
    "OutputParameterName": {
      "Type": "String",
      "Value": "{{ TaskName.OutputParameterName }}"
    }
  }
}

多个输出:

  • YAML语法

Outputs:
  OutputParameterName1: 
    Type: String # 可选,YAML, JSON格式支持的基本类型String, Number, Boolean, List(Array),Object,默认String。
    Value: "{{ TaskName1.OutputParameterName }}" # 必填,参数值,通常为某个任务的输出。
  OutputParameterName2: # 必填,参数名,有效字符为[a-zA-Z0-9_-],即英文半角字母数字下划线中划线,长度限制200个字符。
    Type: String # 可选,YAML, JSON格式支持的基本类型String, Number, Boolean, List(Array),Object,默认String。
    Value: "{{ TaskName2.OutputParameterName }}" # 必填,参数值,通常为某个任务的输出。
  OutputParameterName3: # 必填,参数名,有效字符为[a-zA-Z0-9_-],即英文半角字母数字下划线中划线,长度限制200个字符。
    Type: String # 可选,YAML, JSON格式支持的基本类型String, Number, Boolean, List(Array),Object,默认String。
    Value: "{{ TaskName3.OutputParameterName }}" # 必填,参数值,通常为某个任务的输出。
  • JSON格式(请参考YAML注释说明)

{
  "Outputs": {
    "OutputParameterName1": {
      "Type": "String",
      "Value": "{{ TaskName1.OutputParameterName }}"
    }
    "OutputParameterName2": {
      "Type": "String",
      "Value": "{{ TaskName2.OutputParameterName }}"
    }
    "OutputParameterName3": {
      "Type": "String",
      "Value": "{{ TaskName3.OutputParameterName }}"
    }
  }
}