Utilisez un scénario d'importation de ressources dans Resource Orchestration Service (ROS) pour générer un modèle à partir de ressources existantes, puis modifiez-le pour un déploiement par lot.
Cas d'utilisation
Pour déployer une application web, attribuez le tag app:web à toutes les ressources associées afin de les filtrer lors de l'importation des ressources. Après avoir généré un modèle, ajoutez-y des paramètres pour le rendre réutilisable, puis créez une pile pour déployer par lot les ressources suivantes :
Un VPC
Un vSwitch
Un groupe de sécurité
Deux instances ECS
Une instance SLB

Étape 1 : Créer des ressources et ajouter des tags
Créez les ressources requises dans leurs consoles respectives et ajoutez le tag app:web (clé de tag app, valeur de tag web). Qu'est-ce que les tags ?
Pour les ressources existantes, il vous suffit d'ajouter des tags.
-
Dans la console VPC, créez un VPC et un vSwitch, et ajoutez-leur le tag
app:web.Créer un VPC. Ajouter des tags à un VPC.
RemarquePour ajouter un tag à un vSwitch, suivez la même procédure que pour un VPC. Cliquez sur l'icône
dans la colonne Tags du vSwitch cible. -
Dans la console ECS, créez un groupe de sécurité pour un VPC, définissez Network sur le VPC que vous avez créé à l'étape Étape 1, et ajoutez le tag
app:web. -
Créez deux instances ECS et ajoutez le tag
app:web. -
Dans la console SLB, créez une instance SLB (cet exemple utilise une instance Application Load Balancer) et ajoutez le tag
app:web.
Étape 2 : Créer un scénario de ressource
Créez un scénario d'importation de ressources pour filtrer les ressources issues de l'Étape 1 : Créer des ressources et ajouter des tags.
Connectez-vous à la console ROS.
Dans le volet de navigation de gauche, cliquez sur Scenarios.
Dans la liste déroulante des régions située dans la barre de navigation supérieure, sélectionnez la région du scénario de ressource.
Sur la page Scenarios, cliquez sur Create Scenario.
Dans la boîte de dialogue Create Scenario, saisissez une description pour le scénario et sélectionnez Resource Management comme type de scénario.
-
Définissez la portée des ressources.
Dans la section Method, sélectionnez Source Tag.
Dans la section Source Tag, définissez Tag Key sur
appet Tag Value surweb.
Dans le champ Description, saisissez
web-app. Cliquez sur Generate Scenario. -
Définissez l'option Delete Resource du scénario de ressource sur Retain.
RemarqueSélectionnez Retain pour conserver les ressources existantes lors de la suppression de la pile.
-
Cliquez sur Create.
Une fois le scénario de ressource créé, son Status passe à Created.
Étape 3 : Générer un modèle
Sur la page Scenarios, cliquez sur l'ID du scénario de ressource cible.
Sur la page de gestion du scénario de ressource, cliquez sur Create Template dans le coin supérieur droit.
Le modèle prend en charge les formats JSON et YAML. L'exemple suivant utilise YAML.
Étape 4 : Rendre le modèle réutilisable
Le modèle généré inclut des valeurs codées en dur pour les propriétés des ressources, issues de l'Étape 1 : Créer des ressources et ajouter des tags. Pour rendre le modèle réutilisable, remplacez les valeurs codées en dur, telles que les zones de disponibilité et les types d'instance, par des paramètres, et ajoutez des sorties.
Avant
ROSTemplateFormatVersion: '2015-09-01' # The version of the template syntax.
Resources: {} # A list of resources.
Après
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.
Pour plus d'informations, consultez la section Syntaxe du modèle.
Correspondance entre les propriétés des ressources et les paramètres
|
Nom de la ressource |
Propriétés à paramétrer |
Sorties à ajouter |
|
VPC : ECSVPC_001 |
Bloc CIDR du VPC ( |
Aucune |
|
vSwitch : ECSVSwitch_001 |
ID de la zone de disponibilité ( |
Aucune |
|
Bloc CIDR du vSwitch ( |
||
|
Groupe de sécurité : ECSSecurityGroup_001 |
Aucune |
Aucune |
|
Instance ECS : ECSInstance_00X |
ID de la zone de disponibilité ( |
ID de l'instance ECS ( |
|
Type d'instance ECS ( |
||
|
Catégorie du disque système ECS ( |
||
|
Instance SLB : SLBLoadBalancer_001 |
ID de la zone de disponibilité principale ( |
Adresse IP de l'instance SLB ( |
|
ID de la zone de disponibilité de secours ( |
||
|
Spécification de l'instance SLB ( |
Modification du modèle
Modèle réutilisable
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
(Facultatif) Étape 5 : Déployer les ressources par lots
Utilisez le modèle réutilisable pour créer une pile et déployer les ressources par lots.
-
Dans la console ROS, utilisez le modèle réutilisable issu de l'Étape 4 : Rendre le modèle réutilisable pour créer une pile. Sur la page Configure Template Parameters, définissez des paramètres tels que Availability Zone (par exemple, China (Hangzhou) Zone I), SLB Backup Zone, VPC IPv4 CIDR Block (par exemple, 172.16.0.0/12) et vSwitch CIDR Block. Sélectionnez ensuite un Instance Type, tel que
ecs.c7.large(une instance optimisée pour le calcul c7 dotée de 2 vCPU et de 4 Go de mémoire). Sur la page des détails de la pile, cliquez sur l'onglet Parameter pour consulter les détails des ressources déployées.
