模板是描述基礎設施和架構的藍圖,您可以在模板中部署雲產品及其依賴關係,然後通過ROS完成部署。本文以建立Virtual Private Cloud和交換器(vSwitch)為例向您介紹如何編寫模板。
前提條件
請您提前熟悉模板的結構要求。更多資訊,請參見模板結構說明。
使用須知
您可以訪問對應的資源類型文檔查看屬性詳情。更多資訊,請參見資源類型索引。
資源類型為每個屬性定義了類型、是否必須、是否允許更新等資訊。如果為必須,則要求必須在Resources的Properties中聲明該屬性;反之,則為非必須聲明。如果為允許更新,則可以在新模板中修改該屬性,然後使用修改後的模板更新資源棧以達到更新資源屬性的目的;反之,則不允許更新。
編寫模板
編寫模板最重要的部分是在Resources中聲明需要建立的資源,您可以在資源類型索引中查看ROS支援的所有資源類型,然後在對應資源類型文檔中查看該資源支援的屬性和傳回值。您可以在Resource Orchestration Service控制台的資源棧或模板功能頁面編寫模板,ROS控制台會在您編寫模板的過程中進行提示和校正。更多資訊,請參見使用ROS線上編輯器編寫模板。
查看資源類型詳情。
訪問資源類型索引,根據部署情境查看對應的資源類型。(例如:建立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)
最佳實務