在创建和执行模板时,使用参数(Parameters)可提高模板灵活性和可复用性。
定义参数
根据模板的需要,您可以在模板(Template)中的Parameters字段内定义参数,包括参数名、参数描述和参数类型、默认值以及校验规则等。
参数语法
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
{
"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
}
}
}
引用参数
在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 | 执行所在的账号 | 1234567890**** |
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::ExecuteUserType | String | 触发执行的RAM类型 | RamRole或RamUser或AlibabaCloudAccount |
文档内容是否对您有帮助?