模板編寫快速入門
模板是描述基礎(chǔ)設(shè)施和架構(gòu)的藍圖,您可以在模板中部署云產(chǎn)品及其依賴關(guān)系,然后通過ROS完成部署。本文以創(chuàng)建專有網(wǎng)絡(luò)(VPC)和交換機(vSwitch)為例向您介紹如何編寫模板。
前提條件
請您提前熟悉模板的結(jié)構(gòu)要求。更多信息,請參見模板結(jié)構(gòu)說明。
選擇編輯器
您可以根據(jù)個人使用場景自由選擇在線或本地編輯器,兩者都支持自動語法提示和資源屬性校驗。
在線編輯器:免去安裝過程,可以直接輕松上手使用,適用簡單場景的資源部署與資源管理模板編寫。在線編輯器的使用請參見使用ROS在線編輯器編寫模板。
本地編輯器:分別支持了Visual Studio Code與IntelliJ IDEA兩類編輯器,可以適用于任意復(fù)雜度的模板編寫。本地編輯器的安裝使用請參見Alibaba Cloud Toolkit。
編寫模板
編寫模板最重要的部分是在Resources中聲明需要創(chuàng)建的資源,您可以在資源類型索引中查看ROS支持的所有資源類型,然后在對應(yīng)資源類型文檔中查看該資源支持的屬性和返回值。資源類型為每個屬性定義了類型、是否必須、是否允許更新等信息。如果為必須,則要求必須在Resources的Properties中聲明該屬性;反之,則為非必須聲明。如果為允許更新,則可以在新模板中修改該屬性,然后使用修改后的模板更新資源棧以達到更新資源屬性的目的;反之,則不允許更新。
查看資源類型詳情。
訪問資源類型索引,根據(jù)部署場景查看對應(yīng)的資源類型。(例如:創(chuàng)建VPC和vSwitch需要用到的資源類型為ALIYUN::ECS::VPC和ALIYUN::ECS::VSwitch)
訪問指定資源類型,查看資源對應(yīng)屬性。
在參數(shù)(Parameters)中定義模板參數(shù)。
您可以定義VPC資源中的VpcCidrBlock,vSwitch資源中的ZoneId、
VSwitchName
、VSwitchCidrBlock
,Parameters模板內(nèi)容為ROS控制臺參數(shù)提供可視化界面取值。更多信息,請參見ALIYUN::ECS::VPC和ALIYUN::ECS::VSwitch。如果您創(chuàng)建的交換機和專有網(wǎng)絡(luò)有關(guān)聯(lián),請確保VPC和vSwitch的CidrBlock屬性在同一網(wǎng)段中。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)中聲明待創(chuàng)建的資源。
您必須定義vSwitch資源的VpcId、ZoneId和CidrBlock屬性,VPC和vSwitch資源的其他屬性可以選擇性定義。更多信息,請參見ALIYUN::ECS::VPC和ALIYUN::ECS::VSwitch。您可以直接通過Ref函數(shù)引用Parameters中定義的參數(shù),或者直接給資源屬性賦值。更多信息,請參見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。您可以通過調(diào)用內(nèi)部函數(shù)Fn::GetAtt獲取對應(yīng)資源的屬性值。更多信息,請參見Fn::GetAtt。
Outputs: VpcId: Value: Fn::GetAtt: - Vpc - VpcId VSwitchId: Value: Fn::GetAtt: - VSwitch - VSwitchId
根據(jù)模板結(jié)構(gòu),編寫完整的模板。
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
后續(xù)操作
當(dāng)您編寫完模板后,您可以選擇使用模板創(chuàng)建資源棧或者保存為我的模板。具體操作,請參見資源棧快速入門和創(chuàng)建模板。
相關(guān)文檔
高階模板語法
定義模板的更多信息,請參見模板快速入門。
定義可視化布局信息,請參見元數(shù)據(jù)(Metadata)。
定義映射信息表,請參見映射(Mappings)。
使用內(nèi)部函數(shù)定義條件,請參見條件(Conditions)和函數(shù)(Functions)。
聲明模板規(guī)則,請參見規(guī)則(Rules)
最佳實踐