模板编写快速入门

模板是描述基础设施和架构的蓝图,您可以在模板中部署云产品及其依赖关系,然后通过ROS完成部署。本文以创建专有网络(VPC)和交换机(vSwitch)为例向您介绍如何编写模板。

前提条件

请您提前熟悉模板的结构要求。更多信息,请参见模板结构说明

选择编辑器

您可以根据个人使用场景自由选择在线或本地编辑器,两者都支持自动语法提示和资源属性校验。

  • 在线编辑器:免去安装过程,可以直接轻松上手使用,适用简单场景的资源部署与资源管理模板编写。在线编辑器的使用请参见使用ROS在线编辑器编写模板

  • 本地编辑器:分别支持了Visual Studio Code与IntelliJ IDEA两类编辑器,可以适用于任意复杂度的模板编写。本地编辑器的安装使用请参见Alibaba Cloud Toolkit

编写模板

编写模板最重要的部分是在Resources中声明需要创建的资源,您可以在资源类型索引中查看ROS支持的所有资源类型,然后在对应资源类型文档中查看该资源支持的属性和返回值。资源类型为每个属性定义了类型、是否必须、是否允许更新等信息。如果为必须,则要求必须在Resources的Properties中声明该属性;反之,则为非必须声明。如果为允许更新,则可以在新模板中修改该属性,然后使用修改后的模板更新资源栈以达到更新资源属性的目的;反之,则不允许更新。

  1. 查看资源类型详情。

    1. 访问资源类型索引,根据部署场景查看对应的资源类型。(例如:创建VPC和vSwitch需要用到的资源类型为ALIYUN::ECS::VPCALIYUN::ECS::VSwitch

    2. 访问指定资源类型,查看资源对应属性。

  2. 参数(Parameters)中定义模板参数。

    您可以定义VPC资源中的VpcCidrBlock,vSwitch资源中的ZoneId、VSwitchNameVSwitchCidrBlock,Parameters模板内容为ROS控制台参数提供可视化界面取值。更多信息,请参见ALIYUN::ECS::VPCALIYUN::ECS::VSwitch。如果您创建的交换机和专有网络有关联,请确保VPC和vSwitch的CidrBlock属性在同一网段中。

    Parameters:
      VpcCidrBlock:
        Type: String
        Default: 192.168.0.0/16
        AllowedValues:
          - 10.0.0.0/8
          - 172.16.0.0/12
          - 192.168.0.0/16
      ZoneId:
        Type: String
        AssociationProperty: ALIYUN::ECS::Instance::ZoneId
      VSwitchName:
        Type: String
      VSwitchCidrBlock:
        Type: String
        Default: 192.168.0.0/24
        AllowedValues:
          - 10.0.0.0/24
          - 172.16.0.0/24
          - 192.168.0.0/24
  3. 资源(Resources)中声明待创建的资源。

    您必须定义vSwitch资源的VpcId、ZoneId和CidrBlock属性,VPC和vSwitch资源的其他属性可以选择性定义。更多信息,请参见ALIYUN::ECS::VPCALIYUN::ECS::VSwitch。您可以直接通过Ref函数引用Parameters中定义的参数,或者直接给资源属性赋值。更多信息,请参见Ref

    Resources:
      Vpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          VpcName: MyTest
          CidrBlock:
            Ref: VpcCidrBlock 
      VSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          VpcId:
            Ref: Vpc
          ZoneId:
            Ref: ZoneId
          VSwitchName:
            Ref: VSwitchName
          CidrBlock:
            Ref: VSwitchCidrBlock
  4. 输出(Outputs)中定义模板输出。

    您可以定义VPC资源的输出值VpcId和vSwitch资源的输出值VSwitchId。更多信息,请参见ALIYUN::ECS::VPCALIYUN::ECS::VSwitch。您可以通过调用内部函数Fn::GetAtt获取对应资源的属性值。更多信息,请参见Fn::GetAtt

    Outputs:
      VpcId:
        Value:
          Fn::GetAtt:
            - Vpc
            - VpcId
      VSwitchId:
        Value:
          Fn::GetAtt:
            - VSwitch
            - VSwitchId
  5. 根据模板结构,编写完整的模板。

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      VSwitchName:
        Type: String
      VSwitchCidrBlock:
        Default: 192.168.0.0/24
        Type: String
        AllowedValues:
          - 10.0.0.0/24
          - 172.16.0.0/24
          - 192.168.0.0/24
      VpcCidrBlock:
        Default: 192.168.0.0/16
        Type: String
        AllowedValues:
          - 10.0.0.0/8
          - 172.16.0.0/12
          - 192.168.0.0/16
      ZoneId:
        AssociationProperty: ALIYUN::ECS::Instance::ZoneId
        Type: String
    Resources:
      VSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          VSwitchName:
            Ref: VSwitchName
          VpcId:
            Ref: Vpc
          CidrBlock:
            Ref: VSwitchCidrBlock
          ZoneId:
            Ref: ZoneId
      Vpc:
        Type: ALIYUN::ECS::VPC
        Properties:
          VpcName: MyTest
          CidrBlock:
            Ref: VpcCidrBlock
    Outputs:
      VpcId:
        Value:
          Fn::GetAtt:
            - Vpc
            - VpcId
      VSwitchId:
        Value:
          Fn::GetAtt:
            - VSwitch
            - VSwitchId

后续操作

当您编写完模板后,您可以选择使用模板创建资源栈或者保存为我的模板。具体操作,请参见资源栈快速入门创建模板

相关文档