模板是描述基礎設施和架構的藍圖,您可以在模板中部署云產品及其依賴關系,然后通過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
后續操作
當您編寫完模板后,您可以選擇使用模板創建資源?;蛘弑4鏋槲业哪0濉>唧w操作,請參見資源??焖偃腴T和創建模板。
相關文檔
高階模板語法
定義模板的更多信息,請參見模板快速入門。
定義可視化布局信息,請參見元數據(Metadata)。
定義映射信息表,請參見映射(Mappings)。
使用內部函數定義條件,請參見條件(Conditions)和函數(Functions)。
聲明模板規則,請參見規則(Rules)
最佳實踐