当您使用ROS创建资源栈管理多种资源时,通常需要打开多个控制台查找资源参数信息。此时您可以在模板的参数配置中指定AssociationProperty以获取所选地域下对应的资源,指定AssociationPropertyMetadata对不同参数添加筛选条件,以便在控制台动态选择参数配置。
参数说明
您可以根据实际需求指定AssociationPropertyMetadata参数的取值:
- 为参数指定特定值。例如:
"RegionId": "cn-hangzhou"
,ROS将填入特定的地域cn-hangzhou。 - 为参数指定变量,格式为
${ParemeterKey}
。例如:"VpcId": "${VpcId}"
,ROS将动态获取当前模板中参数VpcId对应的值。说明- 如果需要将
${ParemeterKey}
指定为固定值,可以增加感叹号(!)。例如:${!Literal}
表示取值为${Literal}
。 - 如果要在Terraform模板中使用参数变量,需要在
$
前增加一个$
。例如:"VpcId": "$${VpcId}"
,ROS将动态获取Terraform模板中VpcId对应的值。
- 如果需要将
ROS支持的AssociationProperty和对应的AssociationPropertyMetadata如下表所示。
AssociationProperty取值 | 说明 | 对应的AssociationPropertyMetadata |
---|---|---|
Password | 密码输入。 | 无 |
TextArea | 富文本输入。 | 无 |
Json | 对象输入。 | 无 |
CommaDelimitedList | 逗号分隔的数组。 | 无 |
Code | 代码输入。 | 无 |
FileContent | 从本地文件读取内容。 | AcceptFileSuffixes:接受上传的文件类型。 |
Cron | Cron表达式。 | 无 |
ChargeType | 计费方式。 | 无 |
Auto | ROS会基于Terraform原始数据结构,自动生成AssociationProperty和AssociationPropertyMetadata等字段。
说明 仅对Terraform类型模板的Json类型参数生效。
|
Overwrite:补充或覆盖内层嵌套参数的定义。
该参数可选,为字典类型,组成部分如下:
|
List[Parameter] | 参数列表。使用缩进排布。
仅对Json类型参数生效。 |
Parameter:参数定义。
更多信息,请参见概览。 示例如下:
|
无 | 使用缩进排布。
仅对Json类型参数生效。 |
说明 结合List[Parameter]可以实现嵌套结构,且对于嵌套深度没有限制。
|
List[Parameters] | 参数组列表。使用表格排布。
仅对Json类型参数生效。 |
|
ALIYUN::ECS::RegionId | 地域ID。 | 无 |
ALIYUN::ECS::ZoneId | 可用区ID。 |
|
ALIYUN::ECS::Instance::InstanceId | ECS实例ID。 | RegionId:地域ID。 |
ALIYUN::RDS::Instance::InstanceId | RDS实例ID。 |
|
ALIYUN::ECS::Disk::DataDiskCategory | 数据盘类型。 |
|
ALIYUN::ECS::Disk::SystemDiskCategory | 系统盘类型。 |
|
ALIYUN::ECS::Instance::ImageId | 镜像ID。 | RegionId:地域ID。 |
ALIYUN::ECS::VPC::VPCId | 专有网络ID。 | RegionId:地域ID。 |
ALIYUN::ECS::VSwitch | 交换机。 |
|
ALIYUN::ECS::VSwitch::VSwitchId | 交换机ID。 |
|
ALIYUN::ECS::Instance::InstanceType | ECS实例规格。 |
|
ALIYUN::ECS::SecurityGroup::SecurityGroupId | 安全组ID。 |
|
ALIYUN::ECS::KeyPair::KeyPairName | 密钥对。 | RegionId:地域ID。 |
ALIYUN::ECS::Snapshot::AutoSnapshotPolicyId | 自动快照策略。 | RegionId:地域ID。 |
ALIYUN::RDS::Instance::InstanceType | RDS实例规格。 |
|
ALIYUN::SLB::Instance::InstanceType | SLB实例规格。 |
|
ALIYUN::SLB::Certificate | SLB证书。 | 无 |
ALIYUN::OOS::Template::TemplateName | OOS模板。 | RegionId:地域ID。 |
ALIYUN::OOS::Template::TemplateVersion | OOS模板版本。 |
|
ALIYUN::OOS::Parameter::Value | OOS普通参数。 | RegionId:地域ID。 |
ALIYUN::OOS::SecretParameter::Value | OOS加密参数。 | RegionId:地域ID。 |
ALIYUN::OOS::Package::PackageName | OOS软件包。 | RegionId:地域ID。 |
ALIYUN::OOS::Package::PackageVersion | OOS软件包版本。 |
|
ALIYUN::VPC::VirtualBorderRouter::RouteTableId | 边界路由器(VBR)。 | RegionId:地域ID。 |
ALIYUN::ESS::ScalingConfiguration::ScalingConfigurationId | 弹性伸缩配置。 | RegionId:地域ID。 |
ALIYUN::RAM::User | RAM用户。 | RegionId:地域ID。 |
ALIYUN::RAM::Role | RAM角色。 | RegionId:地域ID。 |
示例1:AssociationProperty示例
在参数中指定AssociationProperty取值为ALIYUN::ECS::Instance::ImageId,以获取所选地域下所有的镜像ID。
"Parameters": {
"UserName": {
"Label": "用户名",
"Description": "请输入用户名",
"Default": "anonymous",
"Type": "String",
"MinLength": "6",
"MaxLength": "12",
"AllowedValues": [
"anonymous",
"user-one",
"user-two"
]
},
"PassWord": {
"Label": "密码",
"NoEcho": "True",
"Description": "请输入用户密码",
"Type": "String",
"MinLength": "1",
"MaxLength": "41",
"AllowedPattern": "[a-zA-Z0-9]*"
},
"ImageId": {
"Label": "镜像",
"Type": "String",
"Description": "请选择镜像",
"AssociationProperty": "ALIYUN::ECS::Instance::ImageId",
"Default": "centos_7_7_x64_20G_alibase_2020****.vhd"
}
}
参数说明:
- UserName:用户名。String类型,长度为6~12个字符,取值:
- anonymous(默认值)
- user-one
- user-two
- PassWord:密码。String类型,无默认值。长度为1~41个字符,支持大写英文字母、小写英文字母和数字。
NoEcho取值为true,表示查询资源栈时将不会返回参数值。
- ImageId:镜像ID。String类型。
AssociationProperty取值为ALIYUN::ECS::Instance::ImageId,创建资源栈时ROS控制台将会验证参数指定的镜像ID是否可用,并以下拉框的方式列出所选地域的其他镜像ID取值。
示例2:AssociationPropertyMetadata示例
在参数中指定AssociationProperty和对应的AssociationPropertyMetadata(RegionId、VpcId和ZoneId),以便获取指定专有网络和可用区的交换机。其中,RegionId取值为固定值cn-hangzhou;VpcId和ZoneId取值为变量${VpcId}和${EcsZone},将根据ALIYUN::ECS::VPC::VPCId和ALIYUN::ECS::Instance::ZoneId选定的取值进行动态刷新,从而建立交换机与专有网络和可用区的关联关系。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
},
"EcsZone": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId"
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"RegionId": "cn-hangzhou",
"VpcId": "${VpcId}",
"ZoneId": "${EcsZone}"
}
}
}
}
示例3:Terraform自动转换示例
当AssociationProperty取值为Auto时,ROS会基于Terraform原始数据结构,自动生成AssociationProperty和AssociationPropertyMetadata等字段。
-
完整模板示例代码
variable "user_information" { type = object({ name = string address = string }) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "name": { "Label": { "zh-cn": "姓名", "en": "Name" } } } } } EOT } variable "region_ids" { type = list(string) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "*": { "AssociationProperty": "ALIYUN::ECS::RegionId" } } } } EOT } variable "docker_ports" { type = list(object({ internal = number external = number protocol = string })) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "protocol": { "AllowedValues": ["TCP", "UDP", "ICMP"] }, "internal": { "Label": { "zh-cn": "内部端口", "en": "Internal Port" } } } } } EOT } variable "complex_type_demo" { type = list(object({ b = list(string) c = list(object({ d = list(string) })) e = list(list(string)) f = list(list(object({ g = list(string) }))) })) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "b": { "MaxLength": 3, "AssociationPropertyMetadata": { "Something": "123" }, "Label": { "zh-cn": "B", "en": "B" } }, "b.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "c": { "Label": { "zh-cn": "C", "en": "C" } }, "c.d": { "Label": { "zh-cn": "C/D", "en": "C/D" } }, "c.d.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "e": { "Label": { "zh-cn": "E", "en": "E" } }, "e.*": { "MaxLength": 3 }, "e.*.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "f.g": { "Label": { "zh-cn": "F/G", "en": "F/G" } }, "f.g.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" } } } } EOT }
-
参数user_information转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameters":{ "address":{ "Type":"String" }, "name":{ "Type":"String", "Label":{ "en":"Name", "zh-cn":"姓名" } } } } }
-
参数region_ids转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]" }
-
参数docker_ports转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameters":{ "internal":{ "Type":"Number", "Label":{ "en":"Internal Port", "zh-cn":"内部端口" } }, "protocol":{ "Type":"String", "AllowedValues":[ "TCP", "UDP", "ICMP" ] }, "external":{ "Type":"Number" } } }, "AssociationProperty":"List[Parameters]" }
-
参数complex_type_demo转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "b":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" }, "Something":"123" }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"B", "zh-cn":"B" }, "MaxLength":3 }, "c":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "d":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"C/D", "zh-cn":"C/D" } } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"C", "zh-cn":"C" } }, "e":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "MaxLength":3 } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"E", "zh-cn":"E" } }, "f":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "g":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"F/G", "zh-cn":"F/G" } } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json" } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]" }
更多示例
您也可以使用AssociationProperty和AssociationPropertyMetadata,实现以下诉求: