模板是描述基础设施和架构的蓝图,您可以在模板中部署云产品及其依赖关系,然后通过ROS完成部署。本文以创建专有网络(VPC)和交换机(vSwitch)为例向您介绍如何编写模板。
前提条件
请您提前熟悉模板的结构要求。更多信息,请参见模板结构说明。
选择编辑器
您可以根据个人使用场景自由选择在线或本地编辑器,两者都支持自动语法提示和资源属性校验。
在线编辑器:免去安装过程,可以直接轻松上手使用,适用简单场景的资源部署与资源管理模板编写。在线编辑器的使用请参见使用ROS在线编辑器编写模板。
本地编辑器:分别支持了Visual Studio Code与IntelliJ IDEA两类编辑器,可以适用于任意复杂度的模板编写。本地编辑器的安装使用请参见Alibaba Cloud Toolkit。
编写模板
编写模板最重要的部分是在Resources中声明需要创建的资源,您可以在资源类型索引中查看ROS支持的所有资源类型,然后在对应资源类型文档中查看该资源支持的属性和返回值。资源类型为每个属性定义了类型、是否必须、是否允许更新等信息。如果为必须,则要求必须在Resources的Properties中声明该属性;反之,则为非必须声明。如果为允许更新,则可以在新模板中修改该属性,然后使用修改后的模板更新资源栈以达到更新资源属性的目的;反之,则不允许更新。
查看资源类型详情。
访问资源类型索引,根据部署场景查看对应的资源类型。(例如:创建VPC和vSwitch需要用到的资源类型为ALIYUN::ECS::VPC和ALIYUN::ECS::VSwitch)
访问指定资源类型,查看资源对应属性。
在参数(Parameters)中定义模板参数。
您可以定义VPC资源中的VpcCidrBlock,vSwitch资源中的ZoneId、
VSwitchName
、VSwitchCidrBlock
,Parameters模板内容为ROS控制台参数提供可视化界面取值。更多信息,请参见ALIYUN::ECS::VPC和ALIYUN::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
在资源(Resources)中声明待创建的资源。
您必须定义vSwitch资源的VpcId、ZoneId和CidrBlock属性,VPC和vSwitch资源的其他属性可以选择性定义。更多信息,请参见ALIYUN::ECS::VPC和ALIYUN::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
在输出(Outputs)中定义模板输出。
您可以定义VPC资源的输出值VpcId和vSwitch资源的输出值VSwitchId。更多信息,请参见ALIYUN::ECS::VPC和ALIYUN::ECS::VSwitch。您可以通过调用内部函数Fn::GetAtt获取对应资源的属性值。更多信息,请参见Fn::GetAtt。
Outputs: VpcId: Value: Fn::GetAtt: - Vpc - VpcId VSwitchId: Value: Fn::GetAtt: - VSwitch - VSwitchId
根据模板结构,编写完整的模板。
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
后续操作
当您编写完模板后,您可以选择使用模板创建资源栈或者保存为我的模板。具体操作,请参见资源栈快速入门和创建模板。
相关文档
高阶模板语法
定义模板的更多信息,请参见模板快速入门。
定义可视化布局信息,请参见元数据(Metadata)。
定义映射信息表,请参见映射(Mappings)。
使用内部函数定义条件,请参见条件(Conditions)和函数(Functions)。
声明模板规则,请参见规则(Rules)
最佳实践