当您编写模板时,可以通过设置参数决定是创建资源还是使用现有资源。本文以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中的CreateVpcCreateVswCreateSg条件执行结果决定模板中的专有网络、交换机、安全组是否会被创建。

控制台配置项

当您使用模板示例创建资源栈时,如果专有网络配置模板为CreateVpc,并配置CreateVswCreateSg创建交换机和安全组,ROS控制台将呈现如下关联参数。

关联参数