全部產品
Search
文件中心

Resource Orchestration Service:Resource Orchestration Service模板快速入門

更新時間:Jun 19, 2024

模板是描述基礎設施和架構的藍圖,您可以在模板中部署雲產品及其依賴關係,然後通過ROS完成部署。本文為您介紹如何編寫並測試模板、在模板中定義資源及其依賴關係等操作,協助您快速使用模板。

背景資訊

當您瞭解ROS的模板結構後,可以嘗試編寫您的第一個模板。更多資訊,請參見模板編寫快速入門

本文從簡入難,為您介紹如何編寫和測試一個簡單的模板(建立VPC),然後深入講解如何在模板中定義多個資源及其依賴關係、在模板中定義參數,從而滿足您在多個部署情境的需求,具體如下:

編寫模板

編寫模板最為重要的部分是在資源(Resources)中聲明需要建立的資源,您可以在資源類型索引中查看ROS支援的所有資源類型,然後單擊特定資源類型查看該資源類型支援的屬性和傳回值資訊。關於如何編寫模板,請參見模板編寫快速入門。建立VPC的模板樣本如下:

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  VPC:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName: myvpc
      CidrBlock: 192.168.0.0/16
Outputs:
  VpcId:
    Value:
      Ref: VPC
  VRouterId:
    Value:
      Fn::GetAtt:
        - VPC
        - VRouterId

測試模板

編寫模板完成後,您可以使用模板建立資源棧,測試通過該模板是否可以建立預期的資源。

  1. 登入Resource Orchestration Service控制台

  2. 建立資源棧。

    1. 在左側導覽列,單擊資源棧

    2. 在頂部功能表列的地區下拉式清單,選擇資源棧的所在地區,例如:華東1(杭州)。

    3. 資源棧列表頁面,單擊建立資源棧,然後在下拉式清單中選擇使用ROS

    4. 選擇模板頁面,在指定模板地區單擊選擇已有模板、選擇模板錄入方式輸入模板,然後在模板內容地區的ROS頁簽輸入編寫模板章節中編寫的YAML格式的模板,最後單擊下一步

    5. 配置參數頁面,輸入資源棧名稱

    6. 配置資源棧區塊,配置失敗時復原逾時設定標籤資源群組資源棧策略資源最大並發數刪除保護RAM角色資源棧事件回調地址手動支付,然後單擊下一步。

    7. 檢查並確認頁面,單擊預覽模板資源,然後在預覽對話方塊查看經過ROS校正的模板中的資源名稱、資源類型和資源屬性,最後單擊確定

    8. 檢查並確認頁面,單擊建立

  3. 查看資源棧。

    1. 在資源棧管理頁面,單擊事件頁簽,查看模板中不同資源的事件列表。

      事件

    2. 單擊資源頁簽,查看已建立的資源詳情。

      說明

      您也可以單擊模板資源ID,然後在資源相應的控制台查看更多資源資訊,進一步確認資源是否符合預期。

      資源

    3. 單擊輸出頁簽,查看在模板Outputs中定義的輸出。

      輸出

在模板中定義多個資源及其依賴關係

瞭解如何編寫基礎的VPC資源相關模板後,您可能需要根據實際部署情境定義多個資源,以及資源之間的依賴關係。例如:交換器vSwitch依賴於VPC,您需要在特定的VPC中建立vSwitch。通過模板定義VPC、vSwitch資源及其依賴關係,然後建立資源棧,可以滿足更為複雜的部署情境。

  1. 使用函數(Functions)函數擷取資源輸出屬性值。

    例如:假設Resources中定義了VPC,可以通過{"Fn::GetAtt": ["VPC", "VpcId"]}擷取VPC資源的輸出屬性VpcId。

  2. 使用函數(Functions)函數擷取資源ID或參數值。

    例如:假設Resources中定義了VPC,可以通過{"Ref": "VPC"}引用VPC資源ID。

    說明
    • {"Ref": "VPC"}{"Fn::GetAtt": ["VPC", "VpcId"]}作用相同,但前者更為便捷。

    • Ref和Fn::GetAtt函數隱式聲明了資源間的依賴關係,您也可以通過DependsOn屬性顯式聲明資源間的依賴關係。

  3. 最佳化模板。

    以下模板樣本,新增聲明一個vSwitch,其可用性區域為cn-beijing-f、名稱為myvsw、CidrBlock為192.168.0.0/24,並引用VPC。此外,在Outputs中定義了vSwitch的輸出為交換器ID。

    ROSTemplateFormatVersion: '2015-09-01'
    Resources:
      VPC:
        Type: ALIYUN::ECS::VPC
        Properties:
          VpcName: myvpc
          CidrBlock: 192.168.0.0/16
      VSwitch:
        Type: ALIYUN::ECS::VSwitch
        Properties:
          VpcId:
            Ref: VPC
          ZoneId: cn-beijing-f
          VSwitchName: myvsw
          CidrBlock: 192.168.0.0/24
    Outputs:
      VpcId:
        Value:
          Fn::GetAtt:
            - VPC
            - VpcId
      VRouterId:
        Value:
          Fn::GetAtt:
            - VPC
            - VRouterId
      VSwitchId:
        Value:
          Ref: VSwitch

在模板中定義參數取值和參數屬性

參數(Parameters)可以提高模板的靈活性和可複用性,您可以通過定義參數取值和參數屬性實現動態展示參數取值列表、為參數分組等需求。

  • 定義參數

    在模板中為資源屬性指定固定值的方式比較便捷,但是不夠靈活。例如:ZoneId為cn-beijing-f,只能在北京地區建立資源棧,如果要更換地區需手動修改模板中的ZoneId取值。此時您可以將常用的或共同的屬性提取出來定義為參數,以便在不修改模板的前提下,通過指定不同的參數來建立不同屬性的資源。模板中定義的參數和模板範例程式碼如下:

    • 模板中定義的多個參數

      參數

      說明

      ZoneId

      被vSwitch的ZoneId屬性引用。

      VpcCidrBlock

      預設值為192.168.0.0/16,被VPC的CidrBlock屬性引用。

      VSwitchCidrBlock

      預設值為192.168.0.0/24,被vSwitch的CidrBlock屬性引用

    • 模板範例程式碼

      ROSTemplateFormatVersion: '2015-09-01'
      Parameters:
        ZoneId:
          Type: String
        VpcCidrBlock:
          Type: String
          Default: 192.168.0.0/16
        VSwitchCidrBlock:
          Type: String
          Default: 192.168.0.0/24
      Resources:
        VPC:
          Type: ALIYUN::ECS::VPC
          Properties:
            VpcName: myvpc
            CidrBlock:
              Ref: VpcCidrBlock
        VSwitch:
          Type: ALIYUN::ECS::VSwitch
          Properties:
            VpcId:
              Ref: VPC
            ZoneId:
              Ref: ZoneId
            VSwitchName: myvsw
            CidrBlock:
              Ref: VSwitchCidrBlock
      Outputs:
        VpcId:
          Value:
            Ref: VPC
        VRouterId:
          Value:
            Fn::GetAtt:
              - VPC
              - VRouterId
        VSwitchId:
          Value:
            Ref: VSwitch

      使用模板範例程式碼建立資源棧時,您可以在Resource Orchestration Service控制台根據需要靈活設定參數取值。

      定義參數

      其中,ROS將分析模板中參數和資源屬性的關聯關係,擷取參數的取值範圍。例如:模板中的ZoneId參數關聯了vSwitch資源的ZoneId屬性,ROS將擷取支援vSwitch的可用性區域列表,並在控制台展示。

      ZoneID

  • 動態設定取值列表

    參數(Parameters)支援多個屬性,您可以通過定義屬性,在控制台靈活呈現參數屬性及取值。模板中定義的參數屬性和模板範例程式碼如下:

    • 參數中定義的多個屬性

      屬性

      說明

      AllowedValues

      定義取值列表,ROS控制台會為參數顯示該列表。例如:VpcCidrBlock取值為10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。

      Label

      定義參數別名,ROS控制台將顯示此別名。例如:ZoneId顯示為可用性區域ID。

    • 模板範例程式碼

      ROSTemplateFormatVersion: '2015-09-01'
      Parameters:
        ZoneId:
          Type: String
          Label: 可用性區域ID
        VpcCidrBlock:
          Type: String
          Label: 專用網路CIDR
          Default: 192.168.0.0/16
          AllowedValues:
            - 10.0.0.0/8
            - 172.16.0.0/12
            - 192.168.0.0/16
        VSwitchCidrBlock:
          Type: String
          Label: 交換器CIDR
          Default: 192.168.0.0/24

      使用模板範例程式碼建立資源棧時,您可以在Resource Orchestration Service控制台直接選擇參數取值。參數值

  • 基於參數關聯關係動態呈現參數

    定義參數的關聯屬性(AssociationProperty和AssociationPropertyMetadata)後,ROS控制台將動態查詢參數的取值列表。更多資訊,請參見AssociationProperty和AssociationPropertyMetadata

    例如:假設模板中要建立ECS執行個體,其中VpcId和vSwitchId作為參數傳入,ROS控制台可以自動顯示VpcId和vSwitchId的取值下拉式清單。模板範例程式碼如下:

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      VpcId:
        Type: String
        AssociationProperty: ALIYUN::ECS::VPC::VPCId
      ZoneId:
        Type: String
        AssociationProperty: ALIYUN::ECS::ZoneId
      VSwitchId:
        Type: String
        AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
          VpcId: ${VpcId}

    使用模板範例程式碼建立資源棧時,您可以在Resource Orchestration Service控制台將動態呈現參數。

    動態展示參數

  • 集中設定同類參數

    中繼資料(Metadata)支援為參數分組。當模板中的參數較多時,可以根據參數的特徵為其分組,以便在控制台集中配置參數。

    例如:將模板中的ZoneId、VpcCidrBlock、VSwitchCidrBlock參數分組到基礎設定和資源設定,其中基礎設定為ZoneId,資源設定為VpcCidrBlock、VSwitchCidrBlock。您可以在Metadata的ParameterGroups中定義這兩個分組。模板範例程式碼如下:

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      ZoneId:
        Type: String
      VpcCidrBlock:
        Type: String
        Default: 192.168.0.0/16
      VSwitchCidrBlock:
        Type: String
        Default: 192.168.0.0/24
    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
          - Parameters:
              - ZoneId
            Label:
              default: 基礎設定
          - Parameters:
              - VpcCidrBlock
              - VSwitchCidrBlock
            Label:
              default: 資源設定

    使用模板範例程式碼建立資源棧時,您可以在Resource Orchestration Service控制台的基礎設定和資源設定分組中集中設定參數。

    參數分組

相關操作