概覽
在創(chuàng)建和執(zhí)行模板時,使用參數(shù)(Parameters)可提高模板靈活性和可復用性。
定義參數(shù)
根據(jù)模板的需要,您可以在模板(Template)中的Parameters字段內定義參數(shù),包括參數(shù)名、參數(shù)描述和參數(shù)類型、默認值以及校驗規(guī)則等。
參數(shù)語法
Parameters:
parameter-name-1: # 參數(shù)名,有效字符為[a-zA-Z0-9\_-],不允許有空格。建議采用首字母小寫的駱駝式風格,如instanceId。
Type: String # 可選,類型,支持List, Number, String, Boolean, Json。默認: String
Description: description # 可選,描述,描述參數(shù)的用途
AssociationProperty: DateTime # 可選,此處可以指定某些類型參數(shù)的屬性,效果是會更便于您創(chuàng)建執(zhí)行時設置參數(shù)。一旦對參數(shù)指定了某屬性,當創(chuàng)建執(zhí)行設置參數(shù)時,控制臺中該參數(shù)輸入框將不再是一個簡單的參數(shù)框,而會變?yōu)楦子谳斎雲(yún)?shù)的展示形式,比如變?yōu)橐粋€下拉框,下拉框中包含參數(shù)的可選項,或者變?yōu)榭蛇x擇時間的tab或者代碼編輯框等。假如該參數(shù)目的是想獲得一個InstanceType,則可以指定屬性為ALIYUN::ECS::Instance::InstanceType,那么設置參數(shù)parameter-name-1時,輸入該參數(shù)的位置則會展示一個下拉框,下拉框包含所有可選擇的InstanceType;如果該參數(shù)目的是想獲得幾行的shell,那么一個小小的參數(shù)輸入框可能不太便于您輸入shell,此時則可以指定屬性為Code,當設置參數(shù)時,該參數(shù)的位置將是一個代碼編輯框。當前支持的屬性包括ALIYUN::ECS::Instance::InstanceType、ALIYUN::ECS::SecurityGroup::SecurityGroupId、ALIYUN::VPC::VSwitch::VSwitchId、ALIYUN::ECS::Image::ImageId、Targets、RateControl、Code、DateTime、Cron、TimeZone ;當然如果您指定屬性同時想細粒度定義屬性也是可以的,通過如下AssociationPropertyMetadata關鍵字既可實現(xiàn),比如屬性指定為DateTime,那么您可通過在AssociationPropertyMetadata關鍵字中定義時間日期格式,來確定您最終設置該參數(shù)的展示形式。
AssociationPropertyMetadata:
Format: 'YYYY-MM-DDThh:mm:ssZ' # 對AssociationProperty展示屬性的形式進行具體定義,定義該關鍵字后,參數(shù)parameter-name-1的展示形式將是經(jīng)篩選后符合AssociationPropertyMetadata定義的形式,比如經(jīng)Format: 'YYYY-MM-DDThh:mm:ssZ'進一步定義后,時間tab將是可選日期+時間的形式進行展示;若本關鍵字值為Format: hh:mm:ssZ,那么時間tab則將只是可選時間的形式展示。
Default: default-value # 可選,默認值,參數(shù)的默認值
AllowedValues: # 可選,包含參數(shù)允許值的列表。
- value1
- value2
AllowedPattern: regular-expression # 可選,參數(shù)的值必須匹配的正則表達式,適用于String
MinLength: 1 # 可選,參數(shù)值的最小長度(即參數(shù)值長度 = MinLength),適用于String
MaxLength: 10 # 可選,參數(shù)值的最大長度(即參數(shù)值長度 = 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
}
}
}
引用參數(shù)
在Tasks字段的屬性內您可以引用上述定義的參數(shù)。引用的語法如下:
"some text {{ parameter_name }} some text {{parameter_name_2}} ..."
舉例如下:
注意,因為YAML的語法特點,引用參數(shù)時,需要在英文半角的雙引內進行。
"{{ parameter-name }}" # 直接引用
"this is the {{ parameter-name }}" # 在一個固定的字符串中引用
"hello {{ parameter-last-name }} {{ parameter-first-name }}" # 在一個固定的字符串中引用多個參數(shù)
偽參數(shù)
為了方便獲取執(zhí)行中的執(zhí)行環(huán)境等信息,OOS提供了偽參數(shù),這些參數(shù)您無需定義即可直接使用。目前支持的偽參數(shù)如下,如您需要更多的偽參數(shù),請開工單聯(lián)系我們并提供您的使用場景,我們將盡快反饋和支持。
名稱 | 類型 | 用途 | 示例 |
ACS::TemplateName | String | 執(zhí)行使用的模板名稱 | test |
ACS::ExecutionId | String | 執(zhí)行ID | exec-2123445567 |
ACS::RegionId | String | 執(zhí)行所在地域 | cn-hangzhou |
ACS::AccountId | String | 執(zhí)行所在的賬號 | 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 | 觸發(fā)執(zhí)行的RAM用戶名稱 | zhangsan |
ACS::ExecuteUserType | String | 觸發(fā)執(zhí)行的RAM類型 | RamRole或RamUser或AlibabaCloudAccount |