Use um cenário de importação de recursos no Resource Orchestration Service (ROS) para gerar um modelo com base em recursos existentes e modifique-o para implantação em lote.
Casos de uso
Para implantar uma aplicação web, aplique a tag app:web em todos os recursos relacionados para filtrá-los durante a importação. Após gerar o modelo, adicione parâmetros para torná-lo reutilizável e crie uma stack para implantar em lote os seguintes recursos:
Uma VPC
Um vSwitch
Um grupo de segurança
Duas instâncias ECS
Uma instância SLB

Etapa 1: Criar recursos e adicionar tags
Crie os recursos necessários nos respectivos consoles e adicione a tag app:web (chave da tag app, valor da tag web). O que são tags?
Para recursos existentes, basta adicionar as tags.
-
No console VPC, crie uma VPC e um vSwitch e adicione a tag
app:weba eles.Criar uma VPC. Adicionar tags a uma VPC.
NotaPara adicionar uma tag a um vSwitch, siga o mesmo procedimento da VPC. Clique em
na coluna Tags do vSwitch desejado. -
No console ECS, crie um grupo de segurança para uma VPC, defina Network como a VPC criada na Etapa 1 e adicione a tag
app:web. -
Crie duas instâncias ECS e adicione a tag
app:web. -
No console SLB, crie uma instância SLB (este exemplo usa uma instância Application Load Balancer) e adicione a tag
app:web.
Etapa 2: Criar um cenário de importação de recursos
Crie um cenário de importação de recursos para filtrar os recursos da Etapa 1: Criar recursos e adicionar tags.
Faça login no console ROS.
No painel de navegação à esquerda, clique em Scenarios.
Na lista suspensa de regiões na barra de navegação superior, selecione a região do cenário de recursos.
Na página Scenarios, clique em Create Scenario.
Na caixa de diálogo Create Scenario, insira uma descrição para o cenário e selecione Resource Management como tipo de cenário.
-
Defina o escopo dos recursos.
Na seção Method, selecione Source Tag.
Na seção Source Tag, defina Tag Key como
appe Tag Value comoweb.
No campo Description, insira
web-app. Clique em Generate Scenario. -
Defina a opção Delete Resource do cenário de recursos como Retain.
NotaSelecione Retain para preservar os recursos existentes quando a stack for excluída.
-
Clique em Create.
Após a criação do cenário de recursos, o Status muda para Created.
Etapa 3: Gerar um modelo
Na página Scenarios, clique em Create Template no canto superior direito.
Na página de gerenciamento do cenário de recursos, clique em Create Template no canto superior direito.
O modelo aceita os formatos JSON e YAML. O exemplo a seguir usa YAML.
Etapa 4: Tornar o modelo reutilizável
O modelo gerado contém valores de propriedades de recursos codificados rigidamente, provenientes da Etapa 1: Criar recursos e adicionar tags. Para tornar o modelo reutilizável, substitua valores fixos, como zonas de disponibilidade e tipos de instância, por parâmetros e adicione saídas.
Antes
ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Resources: {} # A list of resources.
Depois
ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Description: {} # Describes the use case and architecture of the template.
Parameters: {} # Customized parameters extracted from hard-coded values.
Resources: {} # A list of resources.
Outputs: {} # Returns information such as resource properties. You can retrieve the output content from the console or by calling an API operation.
Mapeamento entre propriedades de recursos e parâmetros
|
Nome do recurso |
Propriedades a parametrizar |
Saídas a adicionar |
|
VPC: ECSVPC_001 |
Bloco CIDR da VPC ( |
Nenhuma |
|
vSwitch: ECSVSwitch_001 |
ID da zona de disponibilidade ( |
Nenhuma |
|
Bloco CIDR do vSwitch ( |
||
|
Grupo de segurança: ECSSecurityGroup_001 |
Nenhuma |
Nenhuma |
|
Instância ECS: ECSInstance_00X |
ID da zona de disponibilidade ( |
ID da instância ECS ( |
|
Tipo de instância ECS ( |
||
|
Categoria do disco do sistema ECS ( |
||
|
Instância SLB: SLBLoadBalancer_001 |
ID da zona de disponibilidade primária ( |
Endereço IP da instância SLB ( |
|
ID da zona de disponibilidade de backup ( |
||
|
Especificação da instância SLB ( |
Modificação do modelo
Modelo reutilizável
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Description: The ID of the availability zone.
Label: Availability Zone
SlaveZoneId:
Type: String
Description: The ID of the backup availability zone.
Label: SLB Backup Zone
VpcCidrBlock:
Type: String
Label: VPC IPv4 CIDR Block
Description: The IPv4 address range of the VPC.
Default: 172.16.0.0/12
VSwitchCidrBlock:
Type: String
Label: vSwitch CIDR Block
Description: Must be a subnet of the VPC.
Default: 172.16.0.0/24
ECSInstanceType:
Type: String
Description: The instance type of the ECS instance.
Label: Instance Type
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ZoneId
SystemDiskCategory:
Type: String
Description: The category of the system disk.
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
ZoneId: ZoneId
InstanceType: ECSInstanceType
Label: System Disk Category
LoadBalancerSpec:
Type: String
AssociationProperty: ALIYUN::SLB::Instance::InstanceType
Description: The specification of the SLB instance.
Label: SLB Specification
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: The instance ID of the created ECS instance.
Value:
Fn::GetAtt:
- ECSInstance_001
- InstanceId
ECSInstance_002:
Description: The instance ID of the created ECS instance.
Value:
Fn::GetAtt:
- ECSInstance_002
- InstanceId
SLBListenerIpAddress:
Description: The IP address of the load balancer.
Value:
Fn::GetAtt:
- SLBLoadBalancer_001
- IpAddress
(Opcional) Etapa 5: Implantar recursos em lote
Use o modelo reutilizável para criar uma stack e implantar recursos em lote.
-
No console ROS, use o modelo reutilizável da Etapa 4: Tornar o modelo reutilizável para criar uma stack. Na página Configure Template Parameters, defina parâmetros como Availability Zone (por exemplo, China (Hangzhou) Zone I), SLB Backup Zone, VPC IPv4 CIDR Block (por exemplo, 172.16.0.0/12) e vSwitch CIDR Block. Em seguida, selecione um Instance Type, como
ecs.c7.large(uma instância otimizada para computação c7 com 2 vCPUs e 4 GiB de memória). Na página de detalhes da stack, clique em Parameter para visualizar detalhes sobre os recursos implantados.
