当您编写模板时,可以通过设置参数决定是创建资源还是使用现有资源。本文以VPC资源为例进行介绍。
模板示例
您可以在模板中通过设置VpcMode
,选择使用现有VPC或创建VPC。ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 模板示例,支持创建基础资源配置(VPC、vSwitch、SecurityGroup)或者选择现有基础资源配置。
en: This template supports single-instance with custom image, including scenarios using existing or creating new VPC, vSwitch, SecurityGroup.
Parameters:
VpcMode:
Type: String
Label:
zh-cn: 专有网络配置模式
en: VPC Configuration Mode
AllowedValues:
- SelectVpc
- CreateVpc
VpcId:
Default: Null
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
zh-cn: 现有专有网络的实例ID,在VPC控制台专有网络下查询。
en: Please search the ID starting with (vpc-xxx)from console-Virtual Private Cloud.
Label:
zh-cn: 现有VPC的实例ID
en: Existing VPC Instance ID
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${VpcMode}
- SelectVpc
VpcCidrBlock:
Default: Null
Label:
zh-cn: 专有网络网段
en: VPC CIDR Block
Type: String
AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${VpcMode}
- CreateVpc
Description:
zh-cn: 创建专有网络IP地址段范围,推荐使用以下的IP地址段<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font>。
en: New proprietary network IP address segment range, recommended use of the following IP address segments<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font>.
VswMode:
Type: Boolean
Label:
zh-cn: 是否创建vSwitch。
en: Whether to create vSwitch.
ZoneId:
Default: Null
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Type: String
Description:
zh-cn: 可用区ID。
en: Availability Zone ID.
Label:
zh-cn: 交换机可用区
en: vSwitch Availability Zone
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${VswMode}
- true
vSwitchCidrBlock:
Default: Null
Type: String
AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${VswMode}
- true
Description:
zh-cn: 必须是所属专有网络的子网段,并且没有被其他交换机占用。
en: Must be a sub-network segment of the proprietary network and is not occupied by other vSwitches.
Label:
zh-cn: 交换机网段
en: vSwitch CIDR Block
SgMode:
Type: Boolean
Label:
zh-cn: 是否创建安全组。
en: Whether to create SecurityGroup.
SecurityGroupName:
Default: Null
Type: String
Description:
en: 2 to 128 English or Chinese characters in length.Must start with size letters or Chinese, not http:// and https://, can contain Numbers, dots (.), underscores (_) and hyphens (-).
zh-cn: 长度为2~128个英文或中文字符。必须以大小字母或中文开头,不能以http://和https://开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。
Label:
en: Security Group Name
zh-cn: 安全组名称
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${SgMode}
- true
Conditions:
CreateVpc:
Fn::Equals:
- Ref: VpcMode
- CreateVpc
CreateVsw:
Fn::Equals:
- Ref: VswMode
- true
CreateSg:
Fn::Equals:
- Ref: SgMode
- true
Resources:
Vpc:
Condition: CreateVpc
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock:
Ref: VpcCidrBlock
vSwitch:
Condition: CreateVsw
Type: ALIYUN::ECS::VSwitch
Properties:
VpcId:
Fn::If:
- CreateVpc
- Ref: Vpc
- Ref: VpcId
CidrBlock:
Ref: vSwitchCidrBlock
ZoneId:
Ref: ZoneId
SecurityGroup:
Condition: CreateSg
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Fn::If:
- CreateVpc
- Ref: Vpc
- Ref: VpcId
SecurityGroupName:
Ref: SecurityGroupName
SecurityGroupIngress:
- PortRange: '-1/-1'
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: all
NicType: internet
- PortRange: '-1/-1'
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: all
NicType: intranet
SecurityGroupEgress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: internet
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: intranet
参数说明:- 当
VpcMode
设置为SelectVpc
时,创建交换机和安全组使用的是当前账号下现有的VpcId
。 - 当
VpcMode
设置为CreateVpc
时,创建交换机和安全组使用的是模板内创建专有网络对应的VpcId
。 - 通过
Conditions
中的CreateVpc
、CreateVsw
、CreateSg
条件执行结果决定模板中的专有网络、交换机、安全组是否会被创建。
控制台配置项
当您使用模板示例创建资源栈时,如果专有网络配置模板为CreateVpc
,并配置CreateVsw
和CreateSg
创建交换机和安全组,ROS控制台将呈现如下关联参数。