全部產品
Search
文件中心

Resource Orchestration Service:通過資源情境自動產生模板

更新時間:Jun 19, 2024

您可以通過ROS的資源納管情境,將納管的一組現有資源產生資源情境模板,然後修改資源情境模板為通用模板,最後使用通用模板批量部署資源。

應用情境

假設您需要部署1個Web應用,可以通過為資源綁定統一的標籤app:web,實現在建立資源納管情境時通過標籤篩選指定的資源。一鍵產生資源情境模板後,您可以使用參數(Parameters)提高模板的靈活性和可複用性,將模板修改為通用模板,然後建立資源棧批量部署以下資源:

  • 1個VPC(專用網路)

  • 1個vSwitch(交換器)

  • 1個SecurityGroup(安全性群組)

  • 2個ECS(雲端服務器)

  • 1個SLB(負載平衡)

批量部署

步驟一:建立資源並綁定標籤

在相應產品的控制台建立資源,並僅為本樣本中的資源綁定統一的標籤app:web(標籤鍵為app,標籤值為web)。關於標籤的更多資訊,請參見標籤概述

說明

對於現有資源,僅需綁定標籤即可。

  1. 在VPC控制台,建立1個VPC和1個vSwitch,並綁定標籤app:web

    具體操作,請參見建立VPC為VPC綁定標籤

    說明

    vSwitch綁定標籤方式與VPC相同,單擊目標vSwitch標籤列的標籤表徵圖即可綁定標籤。

  2. 在ECS控制台,建立1個專用網路類型的安全性群組,選擇網路步驟1中建立的VPC,並綁定標籤app:web

  3. 建立2個ECS執行個體,並綁定標籤app:web

    1. 選擇步驟1建立的VPC和vSwitch。

    2. 選擇步驟2建立的安全性群組。

    3. 為ECS執行個體設定其他參數。

      關於參數的更多資訊,請參見建立ECS執行個體

    4. 為ECS執行個體綁定標籤app:web

      具體操作,請參見為ECS執行個體綁定標籤

  4. 在SLB控制台,建立1個SLB執行個體(以ALB執行個體為例),並綁定標籤app:web

    1. 建立SLB執行個體,選擇步驟1建立的VPC。

    2. 建立後端伺服器組,添加步驟3建立的2個ECS執行個體。

    3. 配置監聽並按需設定網域名稱解析。

    4. 為SLB執行個體綁定標籤app:web

步驟二:建立資源納管情境

建立資源納管情境,篩選步驟一:建立資源並綁定標籤建立的資源。

  1. 登入Resource Orchestration Service控制台

  2. 在左側導覽列,單擊資源情境

  3. 在頂部功能表列的地區下拉式清單,選擇資源情境的所在地區。

  4. 資源情境列表頁面,單擊建立資源情境

  5. 建立資源情境對話方塊,設定資源情境描述,然後選擇資源情境為資源納管

  6. 選擇資源範圍。

    1. 選擇方式地區,選擇源標籤

    2. 源標籤地區,設定標籤鍵app,設定標籤值web

    77

  7. 設定資源情境的資源刪除策略保留

    說明

    在刪除資源棧時,本樣本中的資源不需隨資源棧一起刪除,選擇保留。

  8. 單擊產生情境

    建立資源情境成功後,狀態列顯示產生完成

步驟三:產生資源情境模板

  1. 資源情境列表頁面,單擊目標資源情境ID。

  2. 在資源情境管理頁面,單擊右上方的產生模板

    8

產生的模板有JSON和YAML兩種格式。以YAML格式為例,模板內容以及模板說明如下:

模板詳細內容

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSInstance_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: false
      VSwitchId:
        Ref: ECSVSwitch_001
      VpcId:
        Ref: ECSVPC_001
      Tags:
        - Value: web
          Key: app
      SystemDiskSize: 40
      HostName: iZbp11ut2d6rr7gg78a****
      SystemDiskCategory: cloud_essd
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId: cn-hangzhou-i
      InstanceName: launch-advisor-2022****
      InstanceType: ecs.g7.large
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSSecurityGroup_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 1/65535
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 80/80
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 3389/3389
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: '-1/-1'
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: icmp
          SourcePortRange: '-1/-1'
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSVPC_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001
  SLBBackendServerAttachment_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      SlaveZoneId: cn-hangzhou-h
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-app-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec: slb.s1.small
      MasterZoneId: cn-hangzhou-i
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

模板說明

模板內容簡略展示如下:

ROSTemplateFormatVersion: '2015-09-01' // 模板文法版本
Resources: {} // 資源清單
  • ROSTemplateFormatVersion:模板文法版本,其值固定為2015-09-01

  • Resources:資源清單,包括資源屬性、資源間的依賴關係等。資源清單中包含步驟一:建立資源並綁定標籤中建立的資源:

    • 1個VPC:ECSVPC_001。

    • 1個vSwitch:ECSvSwitch_001。

    • 1個SecurityGroup:ECSSecurityGroup_001。

    • 2個ECS:ECSInstance_001、ECSInstance_002,後文簡稱ECSInstance_00X。

    • 1個SLB:包含1個SLBLoadBalancer_001,一個SLBListener_001和一個LBBackendServerAttachment_001。

    資源架構圖如下:

    架構圖

步驟四:修改為通用模板

自動產生的資源情境模板中的資源屬性都為固定值,來源於步驟一:建立資源並綁定標籤中在各產品控制台建立資源時選擇的參數。為了適用不同的情境,需要將模板中屬性的固定值(例如:可用性區域以及執行個體規格等)通過模板文法參數(Parameters)進行調整,同時添加輸出(Outputs)。

修改前

ROSTemplateFormatVersion: '2015-09-01' // 模板文法版本
Resources: {} // 資源清單

修改後

ROSTemplateFormatVersion: '2015-09-01' // 模板文法版本
Description: {} //模板描述資訊,可用於說明模板的適用情境、架構說明等。
Parameters: {} // 將固定值抽離進行定製化的參數
Resources: {} // 資源清單
Outputs: {} // 輸出資源屬性等資訊,可以通過API或控制台擷取輸出的內容。
說明

模板參數的詳細說明,請參見模板文法

資源屬性與參數的對應關係

資源名稱

需抽離的固定值

需添加的輸出參數

專用網路:ECSVPC_001

VPC網段VpcCidrBlock

交換器:ECSvSwitch_001

可用性區域IDZoneId

vSwitch網段VSwitchCidrBlock

安全性群組:ECSSecurityGroup_001

雲端服務器:ECSInstance_00X

可用性區域IDZoneId

雲端服務器執行個體IDInstanceId

ECS執行個體規格ECSInstanceType

ECS系統硬碟類型SystemDiskCategory

負載平衡:SLBLoadBalancer_001

可用性區域IDMasterZoneId

Server Load Balancer執行個體的IP地址IpAddress

SLB備可用性區域SlaveZoneId

SLB執行個體規格LoadBalancerSpec

修改方法

專用網路:ECSVPC_001

  • 將VPC網段屬性(VpcCidrBlock)提取為Parameters,作為參數傳入。

  • 使用Ref定義參數CidrBlock,引用參數ParametersVpcCidrBlock的值。

修改前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001:
    DeletionPolicy: Retain
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 172.16.0.0/12

修改後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcCidrBlock:
    Type: String
    Label: 專用網路IPv4網段
    Description: VPC的IP位址區段範圍
    Default: 172.16.0.0/12
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
說明

關於資源ECSVPC_001其他屬性描述,請參見ALIYUN::ECS::VPC

交換器:ECSvSwitch_001

  • 將可用性區域ID(ZoneId)和vSwitch網段(VSwitchCidrBlock)提取為Parameters,作為參數傳入。

  • 使用Ref定義參數ZoneId,引用參數ParametersZoneId的值。

  • 使用Ref定義參數CidrBlock,引用參數ParametersVSwitchCidrBlock的值。

修改前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VpcId:
        Ref: ECSVPC_001
      ZoneId: cn-hangzhou-i
      CidrBlock: 172.16.0.0/24
    DependsOn:
      - ECSVPC_001

修改後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::ZoneId
    Description: 可用性區域ID
    Label: 可用性區域
  VSwitchCidrBlock:
    Type: String
    Label: 交換器子網網段
    Description: 必須屬於VPC的子網段
    Default: 172.16.0.0/24
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      CidrBlock:
        Ref: VSwitchCidrBlock
      VpcId:
        Ref: ECSVPC_001
      ZoneId:
        Ref: VSwitchZone
    DependsOn:
      - ECSVPC_001
說明
  • 通過在參數中指定AssociationProperty以擷取所選地區下對應的資源,指定AssociationPropertyMetadata對不同參數添加篩選條件,以便在控制台動態選擇參數配置。參數ZoneIdAssociationProperty中的ALIYUN::ECS::ZoneId用來擷取當前地區下的可用性區域ID,以便在控制台通過下拉框的形式供您選擇可用性區域。更多資訊,請參見ationPropertyMetadata

  • 若指定了DependsOn屬性,表示該資源會在依賴的資源建立成功後才開始建立。例如,資源ECSVSwitch_001會等待資源ECSVPC_001建立成功後建立。

  • 關於資源ECSVSwitch_001其他屬性描述,請參見ALIYUN::ECS::VSwitch

雲端服務器:ECSInstance_00X

  • 將可用性區域ID(ZoneId)、ECS執行個體規格(ECSInstanceType)和ECS系統硬碟類型(SystemDiskCategory提取為Parameters,作為參數傳入。

  • 使用Ref定義參數ZoneId,引用參數ParametersZoneId的值。

  • 使用Ref定義參數InstanceType,引用參數ParametersECSInstanceType的值。

  • 使用Ref定義參數SystemDiskCategory,引用參數ParametersSystemDiskCategory的值。

修改前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVSwitch_001: ''
  ECSVPC_001: ''
  ECSSecurityGroup_001: ''
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      ZoneId: cn-hangzhou-i
      InstanceType: ecs.g7.large
      SystemDiskCategory: cloud_essd
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001

修改後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  ECSInstanceType:
    Type: String
    Description: 填寫可用性區域下可使用的規格
    Label: 執行個體類型
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: 系統硬碟類型
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: VSwitchZone
      InstanceType: ECSInstanceType
    Label: 系統硬碟類型
Resources:
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      SystemDiskCategory:
        Ref: SystemDiskCategory
      InstanceType:
        Ref: ECSInstanceType
      ZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
說明
  • 參數EcsInstanceTypeAssociationProperty中的ALIYUN::ECS::Instance::InstanceType用來擷取當前地區下的ECS執行個體規格列表,以便在控制台通過下拉框的形式供您選擇ECS執行個體規格。

  • 參數AssociationPropertyMetadata用來指定查詢的條件,樣本中的ZoneId表示查詢在該可用性區域中支援的ECS執行個體規格。

  • 參數SystemDiskCategoryAssociationProperty中的ALIYUN::ECS::Disk::SystemDiskCategory用來擷取當前地區下的ECS系統硬碟類型。AssociationPropertyMetadata中同樣配置了ZoneId作為查詢條件。

  • 關於資源ECSInstance_00X其他屬性描述,請參見ALIYUN::ECS::Instance

負載平衡:SLBLoadBalancer_001

  • 將可用性區域ID(MasterZoneId)、SLB備可用性區域(SlaveZoneId)和SLB執行個體規格(LoadBalancerSpec提取為Parameters,作為參數傳入。

  • 使用Ref定義參數MasterZoneId,引用參數ParametersZoneId的值。

  • 使用Ref定義參數SlaveZoneId,引用參數ParametersSlaveZoneId的值。

  • 使用Ref定義參數LoadBalancerSpec,引用參數ParametersLoadBalancerSpec的值。

修改前

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      MasterZoneId: cn-hangzhou-i
      SlaveZoneId: cn-hangzhou-h
      LoadBalancerSpec: slb.s1.small
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001

修改後

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId: ''
  SlaveZoneId:
    Type: String
    Description: 備可用性區域ID
    Label: SLB備可用性區域
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: SLB執行個體規格
    Label: 規格
    AssociationPropertyMetadata:
      ZoneId: VSwitchZone
Resources:
  ECSVPC_001: ''
  ECSVSwitch_001: ''
  SLBLoadBalancer_001:
    DeletionPolicy: Retain
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      LoadBalancerName: web-app-slb
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      SlaveZoneId:
        Ref: SlaveZoneId
      MasterZoneId:
        Ref: ZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
說明
  • 通過在參數中指定AssociationProperty來擷取所選地區下對應的資源,指定AssociationPropertyMetadata對不同參數添加篩選條件,以便在控制台動態選擇參數配置。

  • 參數ZoneIdAssociationProperty中的ALIYUN::ECS::ZoneId用來擷取當前地區下的可用性區域ID列表,以便在控制台通過下拉框的形式供您選擇可用性區域。

  • 參數LoadBalancerSpecAssociationProperty中的ALIYUN::SLB::Instance::InstanceType用來擷取當前地區下的SLB執行個體規格列表,以便在控制台通過下拉框的形式供您選擇SLB執行個體規格。更多資訊,請參見ationPropertyMetadata

  • 關於資源SLBLoadBalancer_001其他屬性描述,請參見ALIYUN::SLB::LoadBalancer

輸出參數:Server Load Balancer執行個體的IP地址

關於資源SLBLoadBalancer_001支援輸出的其他屬性,請參見ALIYUN::SLB::LoadBalancer的傳回值部分。

Outputs:
  SLBListenerIpAddress:
    Description: TheIPaddressoftheloadbalancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

輸出參數:雲端服務器執行個體ID

關於資源ECSInstance_00X支援輸出的其他屬性,請參見ALIYUN::ECS::Instance的傳回值部分。

Outputs:
  ECSInstance_001:
    Description: TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId

修改後的通用模板

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Description: 可用性區域ID
    Label: 可用性區域
  SlaveZoneId:
    Type: String
    Description: 備可用性區域ID
    Label: SLB備可用性區域
  VpcCidrBlock:
    Type: String
    Label: 專用網路IPv4網段
    Description: VPC的IP位址區段範圍
    Default: 172.16.0.0/12
  VSwitchCidrBlock:
    Type: String
    Label: 交換器子網網段
    Description: 必須屬於VPC的子網段
    Default: 172.16.0.0/24
  ECSInstanceType:
    Type: String
    Description: ECS執行個體類型
    Label: 執行個體類型
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ZoneId
  SystemDiskCategory:
    Type: String
    Description: 系統硬碟類型
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ZoneId
      InstanceType: ECSInstanceType
    Label: 系統硬碟類型
  LoadBalancerSpec:
    Type: String
    AssociationProperty: ALIYUN::SLB::Instance::InstanceType
    Description: 執行個體規格
    Label: SLB規格
    AssociationPropertyMetadata:
      ZoneId: ZoneId
    Default: slb.s1.small
Resources:
  ECSVPC_001:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName: web-vpc
      EnableIpv6: false
      Description: web-vpc
      Tags:
        - Value: web
          Key: app
  ECSVSwitch_001:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName: web-vsw
      VpcId:
        Ref: ECSVPC_001
      Description: web-vsw
      Tags:
        - Value: web
          Key: app
      ZoneId:
        Ref: ZoneId
      CidrBlock:
        Ref: VSwitchCidrBlock
    DependsOn:
      - ECSVPC_001
  ECSSecurityGroup_001:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      VpcId:
        Ref: ECSVPC_001
      Description: web-sg
      SecurityGroupName: web-sg
      Tags:
        - Value: web
          Key: app
      SecurityGroupIngress:
        - PortRange: 80/80
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 443/443
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
        - PortRange: 22/22
          NicType: intranet
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          Policy: accept
          IpProtocol: tcp
      SecurityGroupType: normal
    DependsOn:
      - ECSVPC_001
  ECSInstance_001:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs002
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  ECSInstance_002:
    Type: ALIYUN::ECS::Instance
    Properties:
      DeletionProtection: true
      SystemDiskCategory:
        Ref: SystemDiskCategory
      VpcId:
        Ref: ECSVPC_001
      Description: web-ecs
      Tags:
        - Value: web
          Key: app
      VSwitchId:
        Ref: ECSVSwitch_001
      SystemDiskSize: 40
      ImageId: centos_7_9_x64_20G_alibase_2022****.vhd
      SpotStrategy: NoSpot
      AllocatePublicIP: false
      InstanceChargeType: PostPaid
      IoOptimized: optimized
      SecurityGroupIds:
        - Ref: ECSSecurityGroup_001
      InternetChargeType: PayByTraffic
      ZoneId:
        Ref: ZoneId
      InstanceName: web-ecs001
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskPerformanceLevel: PL0
    DependsOn:
      - ECSSecurityGroup_001
      - ECSVSwitch_001
      - ECSVPC_001
  SLBListener_001:
    Type: ALIYUN::SLB::Listener
    Properties:
      AclStatus: 'off'
      Protocol: tcp
      Description: tcp_80
      HealthCheck:
        Interval: 2
        HealthyThreshold: 3
        Switch: 'on'
        UnhealthyThreshold: 3
        HealthCheckType: tcp
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
      ListenerPort: 80
      Bandwidth: -1
      BackendServerPort: 80
      Scheduler: tch
      StartListener: true
      Persistence:
        PersistenceTimeout: 0
    DependsOn:
      - SLBLoadBalancer_001
  SLBLoadBalancer_001:
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      DeletionProtection: false
      VpcId:
        Ref: ECSVPC_001
      AddressIPVersion: ipv4
      Tags:
        - Value: web
          Key: app
      SupportPrivateLink: true
      PayType: PayOnDemand
      AddressType: intranet
      VSwitchId:
        Ref: ECSVSwitch_001
      LoadBalancerName: web-slb
      InternetChargeType: paybytraffic
      LoadBalancerSpec:
        Ref: LoadBalancerSpec
      MasterZoneId:
        Ref: ZoneId
      SlaveZoneId:
        Ref: SlaveZoneId
    DependsOn:
      - ECSVPC_001
      - ECSVSwitch_001
  SLBBackendServerAttachment_001:
    Type: ALIYUN::SLB::BackendServerAttachment
    Properties:
      BackendServers:
        - ServerId:
            Ref: ECSInstance_001
          Type: ecs
          Weight: 100
        - ServerId:
            Ref: ECSInstance_002
          Type: ecs
          Weight: 100
      LoadBalancerId:
        Ref: SLBLoadBalancer_001
    DependsOn:
      - SLBLoadBalancer_001
      - ECSInstance_001
      - ECSInstance_002
Outputs:
  ECSInstance_001:
    Description: TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_001
        - InstanceId
  ECSInstance_002:
    Description: TheinstanceIDofcreatedecsinstance
    Value:
      Fn::GetAtt:
        - ECSInstance_002
        - InstanceId
  SLBListenerIpAddress:
    Description: TheIPaddressoftheloadbalancer.
    Value:
      Fn::GetAtt:
        - SLBLoadBalancer_001
        - IpAddress

(可選)步驟五:批量部署資源

您可以使用修改後的統一模板建立資源棧,批量部署資源。

  1. Resource Orchestration Service控制台,使用步驟四:修改為通用模板中的通用模板建立資源棧並批量部署資源。001

    具體操作,請參見建立資源棧

  2. 在資源棧詳情頁單擊參數頁簽,查看部署後的資源詳情。002