Utilisez les groupes de piles (Stack Groups) du service Resource Orchestration Service (ROS) pour créer des instances ECS dotées de la même configuration sur plusieurs comptes et régions Alibaba Cloud.
Vue d'ensemble
Cette rubrique explique comment exploiter les groupes de piles ROS (StackGroup) afin de déployer des instances ECS identiques, accompagnées de leurs ressources réseau dépendantes (VPC, vSwitch et groupe de sécurité), sur plusieurs régions et comptes Alibaba Cloud. Cette approche convient aux déploiements unifiés au sein de groupes d'entreprises, à l'expansion multirégionale des activités mondiales ainsi qu'à la standardisation des infrastructures pour les environnements de développement, de test et de production.
Prérequis
Préparez l'environnement en fonction du modèle d'autorisations que vous souhaitez utiliser.
Modèle d'autorisations géré par le service (recommandé lorsque de nombreux comptes sont impliqués)
Compte Alibaba Cloud : vous disposez d'un compte Alibaba Cloud et avez activé les services ROS et ECS.
Répertoire de ressources : un répertoire de ressources est créé et les comptes cibles y ont rejoint.
Compte administrateur délégué : un compte administrateur délégué est configuré pour ROS. Pour plus d'informations, consultez la page Configurer un compte administrateur délégué.
Modèle d'autorisations géré par l'utilisateur
Compte Alibaba Cloud : vous disposez d'un compte Alibaba Cloud et avez activé les services ROS et ECS.
Comptes : un compte administrateur et les comptes cibles sont créés.
Rôles RAM et approbation : créez manuellement des rôles RAM dans le compte administrateur et dans chaque compte cible afin d'établir une relation d'approbation bidirectionnelle. Pour plus d'informations, consultez la page Accorder des autorisations gérées par l'utilisateur.
Tutoriel
Étape 1 : Préparer le modèle ROS
Le modèle ci-dessous interroge automatiquement le type d'instance recommandé via une source de données DATASOURCE, puis crée un environnement ECS complet (VPC + vSwitch + groupe de sécurité + instance ECS) dans la région cible :
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 自动选择实例规格,创建一台ECS实例及网络资源
en: Creates one ECS instance with an auto-selected instance type
Resources:
# Data source: queries the instance types recommended for the current region (2 vCPUs, 8 GiB of memory, ESSD system disk)
DS-InstanceTypes:
Type: DATASOURCE::ECS::RecommendInstanceTypes
Properties:
Cores: 2
Memory: 8
SystemDiskCategory: cloud_essd
# Creates a VPC
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
# Creates a vSwitch; the zone is taken from the data source result
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VpcId:
Ref: Vpc
CidrBlock: 192.168.0.0/24
ZoneId:
Fn::Jq:
- First
- .[].ZoneId
- Fn::GetAtt:
- DS-InstanceTypes
- InstanceTypes
# Creates a security group
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Ref: Vpc
# Creates an ECS instance; the instance type is taken from the data source result
Instance:
Type: ALIYUN::ECS::Instance
Properties:
IoOptimized: optimized
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: SecurityGroup
VSwitchId:
Ref: VSwitch
ImageId: centos
InstanceType:
Fn::Jq:
- First
- .[].InstanceType
- Fn::GetAtt:
- DS-InstanceTypes
- InstanceTypes
SystemDiskCategory: cloud_essd
Outputs:
VpcId:
Label:
en: VPC ID
Value:
Fn::GetAtt:
- Vpc
- VpcId
InstanceId:
Label:
en: ECS instance ID
Value:
Fn::GetAtt:
- Instance
- InstanceId
Analyse des éléments syntaxiques clés
-
La ressource de source de données DATASOURCE
DS-InstanceTypes: Type: DATASOURCE::ECS::RecommendInstanceTypes # The DATASOURCE:: prefix marks a data source Properties: Cores: 2 # number of vCPUs Memory: 8 # memory (GB) SystemDiskCategory: cloud_essd # system disk categoryUne ressource DATASOURCE ne crée aucune ressource cloud réelle. Elle interroge plutôt les ressources existantes ou les configurations recommandées. Le résultat est obtenu via la fonction Fn::GetAtt. Dans cet exemple, l'attribut InstanceTypes renvoyé est un tableau :
[ {"InstanceType": "ecs.g7.large", "ZoneId": "cn-hangzhou-h", ...}, {"InstanceType": "ecs.g6.large", "ZoneId": "cn-hangzhou-i", ...} ] -
La fonction d'extraction de données Fn::Jq
ZoneId: Fn::Jq: - First # mode: First returns the first result, All returns all results - .[].ZoneId # JQ expression: walks the array and extracts ZoneId from each element - Fn::GetAtt: # data source: the DATASOURCE query result - DS-InstanceTypes - InstanceTypesFn::Jq utilise la syntaxe JQ pour extraire des données de structures JSON complexes. Le mode First renvoie le premier résultat correspondant sous forme de chaîne.
Paramètre Fn::Jq
Signification
Valeur dans cet exemple
1er paramètre
Mode de résultat
First (renvoie la première valeur correspondante)
2e paramètre
Expression de filtre JQ
.[].ZoneId (extrait ZoneId de chaque élément)
3e paramètre
Données d'entrée
Le tableau InstanceTypes renvoyé par la source DATASOURCE
Étape 2 : Créer un groupe de piles
Connectez-vous à la console Resource Orchestration.
Dans le volet de navigation de gauche, cliquez sur Stack Groups.
Dans la barre de menu supérieure, sélectionnez une région. Cette région gère le groupe de piles ; elle ne limite pas les régions dans lesquelles les piles sont déployées.
Cliquez sur Create Stack Group.
Étape 3 : Configurer le groupe de piles
Sur la page Configure Stack Group, configurez les Permissions.
Si vous sélectionnez Self-managed Permissions, configurez le Admin Role et le Execution Role selon les indications de la page. Si vous optez pour Service-managed Permissions, le groupe de piles crée automatiquement les rôles requis sans configuration supplémentaire. Une fois la configuration terminée, cliquez sur Next.
Étape 4 : Configurer le modèle et les paramètres
Sur la page Select Template, cliquez sur Select an Existing Template, définissez la Template Import Method sur Enter Template Content, collez le modèle YAML de l'étape 1, puis cliquez sur Next.
-
Sur la page Configure Parameters, saisissez un Stack Group Name et une Stack Group Description, puis cliquez sur Next.
RemarqueCe modèle ne requiert aucun paramètre supplémentaire (le type d'instance et la zone sont déterminés automatiquement par la source DATASOURCE). Cliquez simplement sur Next.
Étape 5 : Définir les options de déploiement
-
Sur la page Set Deployment Options, les éléments de configuration varient selon le mode d'Permissions sélectionné à l'étape 3 : Configurer le groupe de piles.
Lorsque vous utilisez les Service-managed Permissions :
Élément de configuration
Action
Deployment Destinations
Sélectionnez plusieurs comptes membres ou unités organisationnelles depuis le répertoire de ressources.
Automatic Deployment
Lorsqu'elle est activée, les piles sont automatiquement déployées sur les nouveaux comptes ajoutés. En cas de suppression d'un compte, le comportement est déterminé par l'option Account Removal Behavior. Lorsqu'elle est désactivée, aucune action automatique n'est entreprise.
Account Removal Behavior
S'applique lorsque le déploiement automatique est activé. Vous pouvez spécifier si les piles doivent être supprimées lorsqu'un compte est retiré du dossier.
Lorsque vous utilisez les Self-managed Permissions :
Élément de configuration
Action
Deployment Locations
Sélectionnez l'option Deploy Stacks Within Accounts.
Accounts
Saisissez plusieurs ID de comptes cibles, séparés par des virgules.
-
Configurez les régions et les options de déploiement.
Paramètre
Description
Valeur recommandée
Regions
Sélectionnez les régions cibles où les instances ECS seront déployées (jusqu'à 20).
Sélectionnez selon vos besoins métier.
Maximum Number of Concurrent Accounts
Nombre de comptes déployés simultanément.
La valeur par défaut est 1. Augmentez-la pour accélérer le déploiement.
Fault Tolerance
Nombre maximal d'échecs tolérés avant l'arrêt du déploiement.
Définissez cette valeur en fonction de l'échelle du déploiement.
Region Concurrency
Indique si les régions sont déployées en parallèle.
Parallèle (pour accélérer le déploiement).
RemarqueExemple de matrice de déploiement (3 comptes x 4 régions = 12 instances de pile) :
China (Hangzhou) China (Beijing) China (Shenzhen) China (Hong Kong) Account A (12345...) Instance 1 Instance 2 Instance 3 Instance 4 Account B (67890...) Instance 5 Instance 6 Instance 7 Instance 8 Account C (11111...) Instance 9 Instance 10 Instance 11 Instance 12Chaque instance comprend : VPC + VSwitch + SecurityGroup + Instance ECS (4 ressources au total)
Cliquez sur Next, vérifiez les informations sur la page Check and Confirm, puis cliquez sur Create Stack Group.**
Étape 6 : Consulter les résultats du déploiement
Dans le volet de navigation de gauche, cliquez sur Stack Groups, puis sur le nom du groupe de piles.
-
Cliquez sur l'onglet Instance pour afficher les instances de pile de chaque compte et de chaque région.
Colonne
Description
Stack Instance Account
Le compte cible propriétaire de l'instance de pile.
Stack Instance Region
La région dans laquelle réside l'instance de pile.
Stack ID
L'identifiant unique de chaque pile.
Instance Status
Current : l'instance de pile est à jour, ce qui signifie qu'aucune opération n'est en cours ou n'a échoué sur celle-ci.
Outdated : l'instance de pile n'est pas à jour, ce qui signifie que sa dernière opération est inachevée ou a échoué. Par exemple, lors de la mise à jour du groupe de piles et des instances de pile, les instances en cours de mise à jour affichent l'état Outdated. Si l'assumption de rôle échoue pendant la création ou la mise à jour d'une instance de pile, la pile n'est ni créée ni mise à jour et l'instance passe à l'état Outdated. Si l'assumption de rôle réussit mais que la création ou la mise à jour de la pile échoue, l'instance affiche également l'état Outdated.
Cliquez sur un Stack ID, puis ouvrez l'onglet Resources pour visualiser chaque ressource créée par l'instance de pile : le VPC, le
vSwitch, le groupe de sécurité et l'instance ECS.Une fois que le statut des ressources de chaque instance de pile indique « créé », les instances ECS sont déployées sur l'ensemble des comptes et régions sélectionnés.
FAQ
Une ressource de source de données engendre-t-elle des frais ?
Non. Une ressource de source de données effectue uniquement une requête. Elle ne crée aucune ressource cloud et n'engendre aucun coût. Elle fonctionne comme une requête API exécutée automatiquement lors de la création de la pile.
Que se passe-t-il si aucune instance ne correspond à la requête dans une région ?
Lorsque la source de données renvoie un résultat vide, les ressources qui en dépendent, à savoir le vSwitch et l'instance ECS, ne peuvent pas être créées. L'instance de pile de cette région passe à l'état d'échec, tandis que le déploiement se poursuit dans les autres régions. Deux solutions s'offrent à vous :
Assouplissez les critères de la requête dans la source de données, par exemple en réduisant les valeurs
CoresetMemory.Excluez la région non prise en charge des options de déploiement.
La même adresse IP privée (192.168.0.1) entre-t-elle en conflit entre les régions ?
Non. Chaque instance de pile crée son propre VPC et une adresse IP privée n'est valide qu'au sein du VPC qui la contient. Les VPC étant isolés au niveau réseau, le même bloc CIDR et la même adresse peuvent être réutilisés dans chaque compte et chaque région sans provoquer de collision.
Peut-on modifier la configuration ECS du modèle, telle que le nombre de vCPU ou la taille de la mémoire ?
Oui. Modifiez les propriétés Cores et Memory de la source de données. Pour une instance disposant de 4 vCPU et de 16 Go de mémoire :
DS-InstanceTypes:
Type: DATASOURCE::ECS::RecommendInstanceTypes
Properties:
Cores: 4
Memory: 16
SystemDiskCategory: cloud_essd
La source de données interroge alors le type d'instance recommandé répondant aux nouvelles exigences dans chaque région, ce qui évite toute spécification manuelle du type d'instance.
Pour en savoir plus sur les problèmes de déploiement des ressources, consultez la page FAQ.