全部产品

参数(Parameter)

更新时间:2020-09-11 10:56:52

在创建和执x行模板时,使用参数(Parameters)可提高模板灵活性和可复用性。

定义参数

根据模版的需要,您可以在模板(Template)中的Parameters字段内定义参数,包括参数名、参数描述和参数类型、默认值以及校验规则等。

参数语法

  • YAML格式
Parameters:
  parameter-name-1: # 参数名,有效字符为[a-zA-Z0-9\_-],不允许有空格。建议采用首字母小写的骆驼式风格,如instanceId。
    Type: String # 可选,类型,支持List, Number, String, Boolean, Json。默认: String
    Description: description # 可选,描述,描述参数的用途
    AssociationProperty: DateTime # 可选,此处可以指定某些类型参数的属性,效果是会更便于您创建执行时设置参数。一旦对参数指定了某属性, 当创建执行设置参数时,控制台中该参数输入框将不再是一个简单的参数框,而会变为更易于输入参数的展示形式,比如变为一个下拉框,下拉框中包含参数的可选项,或者变为可选择时间的tab或者代码编辑框等。假如该参数目的是想获得一个InstanceType,则可以指定属性为ALIYUN::ECS::Instance::InstanceType,那么设置参数parameter-name-1时,输入该参数的位置则会展示一个下拉框,下拉框包含所有可选择的InstanceType;如果该参数目的是想获得几行的shell,那么一个小小的参数输入框可能不太便于您输入shell,此时则可以指定属性为Code,当设置参数时,该参数的位置将是一个代码编辑框。当前支持的属性包括ALIYUN::ECS::Instance::InstanceType、ALIYUN::ECS::SecurityGroup::SecurityGroupId、ALIYUN::VPC::VSwitch::VSwitchId、ALIYUN::ECS::Image::ImageId、Targets、RateControl、Code、DateTime、Cron、TimeZone ;当然如果您指定属性同时想细粒度定义属性也是可以的,通过如下AssociationPropertyMetadata关键字既可实现,比如属性指定为DateTime,那么您可通过在AssociationPropertyMetadata关键字中定义时间日期格式,来确定您最终设置该参数的展示形式。
    AssociationPropertyMetadata:
      Format: 'YYYY-MM-DDThh:mm:ssZ'   # 对AssociationProperty展示属性的形式进行具体定义,定义该关键字后,参数parameter-name-1的展示形式将是经筛选后符合AssociationPropertyMetadata定义的形式,比如经Format: 'YYYY-MM-DDThh:mm:ssZ'进一步定义后,时间tab将是可选日期+时间的形式进行展示;若本关键字值为Format: hh:mm:ssZ,那么时间tab则将只是可选时间的形式展示。
    Default: default-value # 可选,默认值,参数的默认值
    AllowedValues: # 可选,包含参数允许值的列表。
      - value1
      - value2
    AllowedPattern: regular-expression # 可选,参数的值必须匹配的正则表达式,适用于String
    MinLength: 1 # 可选,参数值的最小长度(即参数值长度 = MinLength),适用于String
    MaxLength: 10 # 可选,参数值的最大长度(即参数值长度 = MaxLength),适用于String
  • JSON格式(请参考YAML注释说明)
{
  "Parameters": {
    "parameter-name-1": {
      "Type": "String",
      "Description": "description",
      "AssociationProperty": "DateTime",
      "AssociationPropertyMetadata": {
        "Format": "YYYY-MM-DDThh:mm:ssZ"
      },
      "Default": "default-value",
      "AllowedValues": [
        "value1",
        "value2"
      ],
      "AllowedPattern": "regular-expression",
      "MinLength": 1,
      "MaxLength": 10
    }
  }
}

AssociationProperty属性支持情况:

可联想的属性类型表达式兼容的参数TypeAssociationPropertyMetadata的定义备注
ECS实例规格ALIYUN::ECS::Instance::InstanceTypeString参数值如ecs.g5.large
安全组IDALIYUN::ECS::SecurityGroup::SecurityGroupIdString参数值如sg-bp123457asa****
交换机IDALIYUN::VPC::VSwitch::VSwitchIdString{ "Filters": [ { "SecurityGroupId": "securityGroupId" }]}表示筛选出该安全组ID所属VPC下的交换机ID,默认不筛选,范围是创建执行所在region所有交换机ID。参数值如vsw-abc213454124****
镜像ALIYUN::ECS::Image::ImageIdString参数值如m-bp123546z****或centos_7_04_64_20G_alibase_201701015.vhd
目标资源TargetsJson{ "ResourceType": "ALIYUN::ECS::Instance", "RegionId": "regionId" }其中regionid是与本参数同级别定义在Parameters内的参数名。{ "ResourceType": "ALIYUN::ECS::Instance" }本种形式未定义RegionId,RegionId默认为创建执行所在的地域。默认定义为{ "ResourceType": "ALIYUN::ECS::Instance" }若手动选择实例则参数值如{"Type":"ResourceIds","ResourceIds":["i-bpzxvbb****","i-bpzx1234****"]}。若指定实例的标签则参数值如{"Type":"Tags","Tags":[{"Key":"oos","Value":"debug"}]}
并发率及最大错误数RateControlJson参数值如{"Mode":"Concurrency","MaxErrors":0,"Concurrency":10}
代码CodeString{"language": "shell"},默认为{"language": "shell"}当定义{"language": "shell"}时参数值如df -h
日期时间DateTimeString{"Format": "hh:mm:ssZ"} {"Format":"YYYY-MM-DDThh:mm:ssZ"}默认为 {"Format":"YYYY-MM-DDThh:mm:ssZ"}当定义{"Format":"YYYY-MM-DDThh:mm:ssZ"}时参数值如"2020-02-07T10:05:50Z",当定义{"Format": "hh:mm:ssZ"} 时参数值如"10:13:36Z"
Cron计划任务CronString参数值如"0 * * 10 * ?"
时区TimeZoneString参数值如Asia/Shanghai
RAM子用户名称ALIYUN::RAM::UserString、List参数值如xiaoli
地域RegionIdString参数值如cn-hangzhou
ECS实例可用区ALIYUN::ECS::Instance::ZoneIdString创建执行地域下的ECS实例的可用区,参数值如cn-hangzhou-i
标签TagsJson参数值如[{"Key":"oos","Value":"debug"},{"Key":"oos","Value":"test"}]
模版名称TemplateNameString当选择我的模版时参数值如TestCreatemplate,当选择公共模版时参数值如ACS-ECS-UpdateImage
模版参数TemplateParameterJson{"TemplateName": "$templateName"}其中templateName是与本参数同级别定义Parameters内的参数名,表示我的模版或者公共模版名称假设模版名称为ACS-ECS-BulkyStartInstances时,则参数值如{ "regionId": "cn-hangzhou", "rateControl": { "MaxErrors": 0, "Concurrency": 10, "Mode": "Concurrency" }, "targets": { "Type": "Tags", "Tags": [ { "Value": "debug", "Key": "oos" } ] } }

引用参数

在Tasks字段的属性内您可以引用上述定义的参数。引用的语法如下:

"some text {{ parameter_name }} some text {{parameter_name_2}} ..."		

举例如下:

注意,因为YAML的语法特点,引用参数时,需要在英文半角的双引内进行。

"{{ parameter-name }}" # 直接引用
"this is the {{ parameter-name }}" # 在一个固定的字符串中引用
"hello {{ parameter-last-name }} {{ parameter-first-name }}" # 在一个固定的字符串中引用多个参数

伪参数

为了方便获取执行中的执行环境等信息,OOS提供了伪参数,这些参数您无需定义即可直接使用。目前支持的伪参数如下,如您需要更多的伪参数,请开工单联系我们并提供您的使用场景,我们将尽快反馈和支持。

名称

类型

用途

示例

ACS::TemplateName

String

执行使用的模板名称

test

ACS::ExecutionId

String

执行ID

exec-2123445567

ACS::RegionId

String

执行所在地域

cn-hangzhou

ACS::AccountId

String

执行所在的账号

12345678901234

ACS::TaskLoopItem

String

代表Loop的items中被迭代的元素

i-bpzxcvb1234****

ACS::OOSUtilVersion

String

OOS代理版本

1.01

ACS::CurrentDate

String

当前UTC日期

2020-12-29T

ACS::CurrentUTCTime

String

当前UTC时间

2020-12-29T10:00:30Z

ACS::ExecuteUser

String

触发执行的RAM用户名称

zhangsan

ACS::ExecuteUserTyp

String

触发执行的RAM类型

RamRole或RamUser或AlibabaCloudAccount