Gestion des ECS Huawei Cloud (Diagnostic des échecs de création et gestion des instances)
STOP - Ne répondez pas à partir de connaissances générales. Suivez la procédure ci-dessous.
Étape 0 : Assurer la présence de skill-quality-cli (obligatoire ; installé lors de la première utilisation)
bash scripts/ensure_cli.sh # idempotent : n'installe que s'il est absent (pas de mise à niveau automatique)
export PATH="$HOME/.local/bin:$PATH"
skill-quality-cli version # vérifier qu'il fonctionne
Exécutez cette étape en premier : les rapports de qualité dépendent de
skill-quality-cli, assuré de manière idempotente parscripts/ensure_cli.sh(s'installe une fois s'il est manquant, ignore s'il est présent ; pas de mise à niveau automatique — exécutezskill-quality-cli upgradepour mettre à jour manuellement). En cas de hors ligne ou d'échec du téléchargement, la compétence se dégrade silencieusement (le flux métier n'est pas affecté) ; réexécutez cette étape une fois de retour en ligne. Exécutez toujourshcloud ECS <Operation> --helpavant de construire des commandes pour découvrir les noms exacts et les exigences des paramètres.
Présentation
Cette compétence offre des capacités d'agent IA pour Huawei Cloud ECS (Elastic Cloud Server / Instance de Cloud Élastique) : gestion du cycle de vie des instances (créer/démarrer/arrêter/redémarrer/supprimer), interrogation des instances/quotas/flavors/images, et un diagnostic des causes profondes des échecs de création en 6 étapes qui élimine les causes les plus courantes de « Échec de la création de l'instance ECS » dans l'ordre : quota → flavor → image → réseau → paire de clés → disque.
Elle expose 23 actions huawei_* dans cinq groupes de capacités :
| Capacité | Niveau de risque | Actions |
|---|---|---|
| Interrogation (lecture seule) | R3 — exécution automatique | huawei_list_ecs_instances, huawei_get_ecs_instance, huawei_list_ecs_flavors, huawei_list_ecs_images, huawei_list_ecs_quotas |
| Diagnostic (lecture seule) | R3 — exécution automatique | huawei_diagnose_ecs_create_failure, huawei_analyze_ecs_health |
| Gestion — cycle de vie | R2 — aperçu + confirmation | huawei_create_ecs_instance, huawei_start_ecs_instance, huawei_stop_ecs_instance, huawei_restart_ecs_instance |
| Gestion — cycle de vie | R1 — aperçu + confirmation | huawei_delete_ecs_instance |
| Gestion — opérations de changement (§5) | R2 — aperçu + confirmation | huawei_resize_ecs_instance, huawei_reinstall_ecs_os, huawei_reset_ecs_password, huawei_replace_ecs_keypair, huawei_bind_ecs_eip, huawei_change_ecs_security_group, huawei_add_ecs_nic, huawei_attach_ecs_volume, huawei_detach_ecs_volume |
| Gestion — opérations de changement (§5) | R1 — aperçu + confirmation | huawei_unbind_ecs_eip, huawei_remove_ecs_nic |
Chaque action d'écriture est asynchrone : l'API renvoie un job_id et le vrai travail se poursuit en
arrière-plan. Le sondage de ce travail est une étape obligatoire, pas un supplément optionnel — voir
§6 Sondage des travaux asynchrones.
Limites du périmètre :
- ✅ Interroger les instances, flavors, images, quotas ECS (lecture seule)
- ✅ Diagnostiquer les échecs de création ECS (quota → flavor → image → réseau → paire de clés → disque) et analyser la santé de l'instance (statut / disque / réseau)
- ✅ Créer (post-payé), démarrer, arrêter, redémarrer, supprimer des instances ECS (R2/R1 : toujours aperçu + confirmation)
- ✅ Modifier une instance existante : redimensionner le flavor, réinstaller l'OS, réinitialiser le mot de passe, remplacer la paire de clés, lier/délier une EIP, attacher/détacher un groupe de sécurité existant, ajouter/supprimer une carte réseau, attacher/détacher un volume (R2/R1 : toujours aperçu + confirmation)
- ❌ NE JAMAIS créer, supprimer ou reconfigurer la ressource VPC / sous-réseau / groupe de sécurité ou la ressource volume EVS elle-même. Cette compétence attache ou détache uniquement des ressources existantes à une instance ; utilisez les compétences VPC / EVS dédiées pour la mutation au niveau de la ressource.
- ❌ NE JAMAIS exécuter une action d'écriture sans confirmation explicite de l'utilisateur.
- ❌ NE JAMAIS signaler une écriture comme « terminée » avant que son travail asynchrone n'ait atteint
SUCCESSet, pourcreate, avant que l'instance n'ait atteintACTIVE - ❌ NE JAMAIS transmettre les informations d'identification (AK/SK, mots de passe, jetons) dans une sortie ou un rapport
- ➡️ Hors de portée : interrogations RDS / base de données. Cette compétence gère uniquement le calcul. Lorsque l'utilisateur demande
une base de données dont dépend une instance ECS, renvoyez la question à l'utilisateur avec un
pointeur vers une compétence RDS dédiée ou la console Huawei Cloud RDS — cette compétence n'invoque jamais d'autre
compétence. Voir
references/related-skills.mdpour le libellé de transfert.
Dépendance : La télémétrie de qualité est collectée automatiquement via skill-quality-cli
(installé par scripts/ensure_cli.sh s'il est absent).
Avertissements critiques
| Piège | Pourquoi |
|---|---|
| L'épuisement des quotas est la cause n°1 des échecs de création | Quota insuffisant / Quota dépassé signifie que les instances/cœurs/RAM/volumes ont atteint la limite du projet — vérifiez d'abord ShowServerLimits |
| Le flavor doit exister dans la région/AZ cible | Un flavor existe globalement mais peut être épuisé ou indisponible dans l'AZ choisie — filtrez ListFlavors par --availability_zone |
L'image doit être active et correspondre à l'architecture du flavor | Une image supprimée/image privée avec un __os_type/architecture erroné (x86 vs ARM) échoue le provisionnement — vérifiez IMS ListImages --status=active |
| Un sous-réseau sans adresses IP libres bloque la création | Si le CIDR du sous-réseau est épuisé ou si dhcp est désactivé, l'allocation de la carte réseau échoue |
| Le groupe de sécurité doit exister avant la création | Le référencement d'un ID de groupe de sécurité inexistant échoue la demande |
| Les erreurs de paire de clés sont trompeuses | Si key_name est défini mais que la paire de clés n'existe pas, la création échoue avec KeypairNotFound — vérifiez avec KPS ListKeypairs |
| Disponibilité du disque/de l'AZ | Les types de volume racine/données (SATA/SAS/GPSSD) peuvent être indisponibles dans l'AZ cible — vérifiez EVS ListVolumes et les quotas de volume |
| La suppression est irréversible | R1 : vérifiez d'abord l'instance, confirmez qu'il n'y a pas de dépendance de données, puis exigez une confirmation explicite de l'utilisateur |
Prérequis
- CLI hcloud (KooCLI 7.2.x ou ultérieur) installé et authentifié.
- Guide d'installation et de configuration : voir
references/cli-installation-guide.md - Deux modes d'authentification pris en charge :
- Informations d'identification AK/SK : variables d'environnement
HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK(ouHUAWEI_ACCESS_KEY/HUAWEI_SECRET_KEY), ou configuration interactive via l'assistant de configuration hcloud. - Profil hcloud local : exécutez « hcloud configure list » ; il doit afficher un profil valide avec le mode
AKSKet un vraiaccessKeyId
- Informations d'identification AK/SK : variables d'environnement
- Vérifiez l'authentification avec « hcloud configure list »
- Guide d'installation et de configuration : voir
- Région : ECS est spécifique à une région. Passez toujours
--cli-region={region}(par ex.cn-north-4).--project_idest automatiquement renseigné à partir du profil lorsqu'il est omis. - Permissions IAM : les politiques de moindre privilège sont fournies dans
references/iam-policies.md.- Interrogation/diagnostic :
ecs:cloudServers:list,ecs:cloudServers:get,ecs:cloudServerFlavors:list,ecs:cloudServerImages:list,ecs:jobs:get,ecs:serverVolumes:list,ims:images:list,vpc:subnets:list,vpc:securityGroups:list,vpc:publicIps:list,evs:volumes:list,kps:keypairs:list(étape de diagnostic 5,hcloud KPS ListKeypairs) - Gestion :
ecs:cloudServers:create,ecs:cloudServers:action(démarrer/arrêter/redémarrer, redimensionner, réinstaller, réinitialiser le mot de passe, changements de carte réseau et de groupe de sécurité),ecs:cloudServers:delete - Les opérations de changement (§5) nécessitent également l'action d'écriture de chaque ressource qu'elles touchent, par ex.
evs:volumes:deleteavec--delete_volume=true,vpc:publicIps:deleteavec--delete_publicip=true; la liste exacte se trouve dansreferences/iam-policies.md.
- Interrogation/diagnostic :
skill-quality-cli— assuré parbash scripts/ensure_cli.sh(idempotent, ignore s'il est présent)- Mise à niveau : exécutez
skill-quality-cli upgrademanuellement (pas de mise à niveau automatique) - Désactiver le rapport de télémétrie : définissez
SKILL_QUALITY_REPORT=0
- Mise à niveau : exécutez
Workflow
1. Identifier la cible → région, instance_id / flavor_id / image_id / vpc_id / subnet_id / key_name, mots-clés d'intention
2. Classifier l'intention →
- Interrogation/Diagnostic (R3) : lister / afficher / analyser / diagnostiquer — exécution automatique
- Gestion du cycle de vie (R2) : créer / démarrer / arrêter / redémarrer — TOUJOURS afficher l'aperçu et demander une confirmation explicite
- Gestion du cycle de vie (R1) : supprimer — TOUJOURS afficher les détails de l'instance, avertissement irréversible, confirmation explicite
- Opérations de changement (R2) : redimensionner / réinstaller / réinitialiser le mot de passe / remplacer la paire de clés / lier une EIP /
changer le groupe de sécurité / ajouter une carte réseau / attacher un volume — TOUJOURS aperçu + confirmation
- Opérations de changement (R1) : délier une EIP / supprimer une carte réseau / supprimer une paire de clés — TOUJOURS afficher la pièce jointe
actuelle, avertissement irréversible, confirmation explicite
3. Vérification préalable → pour la création et pour chaque opération de changement, exécutez d'abord les contrôles en lecture seule
(quota, flavor, image, réseau, paire de clés, disque) afin que l'utilisateur confirme par rapport à l'état réel
4. Exécuter → construisez la commande hcloud à partir des modèles vérifiés ci-dessous
5. Capturer l'ID du travail → l'API d'écriture renvoie un job_id immédiatement ; le travail est encore en cours d'exécution
6. Sonder le travail asynchrone → `hcloud ECS ShowJob` jusqu'à ce que `status=SUCCESS|FAIL` ; pour create, SONDEZ AUSSI
`hcloud ECS ShowServer` jusqu'à ce que `status=ACTIVE` ; puis signalez l'état FINAL à l'utilisateur
7. Sortie → résumé JSON structuré + rapport de diagnostic lisible
8. Signaler la qualité → automatique via le wrapping de l'exécution skill-quality-cli (voir Étape 0 / Prérequis #4)
Portes de confirmation (NE DOIVENT PAS être ignorées) :
- Actions R2 (
huawei_create_ecs_instance,huawei_start_ecs_instance,huawei_stop_ecs_instance,huawei_restart_ecs_instance) : affichez la commande complète, la ou les instances cibles, et demandez « confirmer ? » avant d'exécuter. - Action R1 (
huawei_delete_ecs_instance) : exécutez d'abord la vérification en lecture seule (ShowServerpour confirmer que l'instance existe et enregistrer son statut/flavor/volumes). Affichez la commande complète avec l'avertissement de suppression irréversible, et exigez une confirmation explicite avant d'exécuter. - Actions d'opérations de changement (R2 :
huawei_resize_ecs_instance,huawei_reinstall_ecs_os,huawei_reset_ecs_password,huawei_replace_ecs_keypair,huawei_bind_ecs_eip,huawei_change_ecs_security_group,huawei_add_ecs_nic,huawei_attach_ecs_volume) : affichez l'état actuel (viaShowServer/ListServerVolumeAttachments/ListServerInterfaces), la commande complète et l'état final attendu, puis demandez « confirmer ? ». - Actions d'opérations de changement (R1 :
huawei_unbind_ecs_eip,huawei_remove_ecs_nic) : affichez ce qui sera détaché et l'impact sur la connectivité (une EIP déliée perd l'accès public ; une carte réseau supprimée perd ce chemin réseau et son adresse IP privée), exigez une confirmation explicite, et ne les enchaînez jamais avec une suppression. Pourhuawei_detach_ecs_volume(R2), avertissez que--delete_flag=1supprime le disque de données. - Vérification préalable à la création : avant
huawei_create_ecs_instance, exécutez TOUJOURShuawei_diagnose_ecs_create_failure(ou au moins les vérifications de quota + flavor + image) afin que l'utilisateur voie que l'environnement est prêt, puis confirmez. - Le sondage asynchrone est obligatoire : ne finalisez jamais une action d'écriture avant que le travail n'atteigne un état
terminal. Un
job_idsans sondage est une action incomplète, pas un succès.
Les opérations d'écriture sont marquées [E] / 写操作 dans les blocs de commande ci-dessous (mots-clés de détection :
create / start / stop / restart / delete — les mêmes verbes que le détecteur d'opération d'écriture du pipeline de test utilise comme clé).
Commandes principales
Toutes les commandes ci-dessous sont présentées sous forme double : la commande exécutable nue
hcloud <Service> <Operation>et le payload identique enveloppé avecskill-quality-cli run --skill-name huawei-cloud-ecs-manage -- ...pour les rapports de qualité. Elles nécessitent que la CLI KooCLI (CLI hcloud) soit installée et authentifiée (voir Prérequis) ; aucun package SDK Python n'est nécessaire pour les commandes métier.
⚠️ Obligatoire : chaque commande
hclouddans cette compétence DOIT être enveloppée avecskill-quality-cli run --skill-name huawei-cloud-ecs-manage -- <commande>— les appels nushcloudsont strictement interdits.
1. Interrogation (R3 — lecture seule, exécution automatique)
huawei_list_ecs_instances — lister les instances ECS et leur statut :
# Optionnel : --limit={n} --offset={n} --status={ACTIVE|SHUTOFF|ERROR|BUILD|...} --name={nom} --server_id={id1,id2}
hcloud ECS ListServersDetails --cli-region={région}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud ECS ListServersDetails --cli-region={région}
huawei_get_ecs_instance — interroger les détails complets d'une instance (statut, adresses, flavor, volumes, erreur) :
hcloud ECS ShowServer --cli-region={région} --server_id={server_id}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud ECS ShowServer --cli-region={région} --server_id={server_id}
huawei_list_ecs_flavors — lister les flavors disponibles (éventuellement limités à une AZ) :
# Optionnel : --availability_zone={az} --flavor_id={flavor_id} --limit={n} --marker={marqueur}
hcloud ECS ListFlavors --cli-region={région}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud ECS ListFlavors --cli-region={région}
huawei_list_ecs_images — lister les images disponibles (filtrer par type d'OS / architecture / statut) :
# Optionnel : --__os_type={Linux|Windows} --architecture={x86|arm} --status={active} --name={nom} --limit={n}
hcloud IMS ListImages --cli-region={région}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud IMS ListImages --cli-region={région}
huawei_list_ecs_quotas — interroger l'utilisation des quotas du projet :
hcloud ECS ShowServerLimits --cli-region={région}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud ECS ShowServerLimits --cli-region={région}
ShowServerLimits renvoie les limites absolues et l'utilisation (maxTotalInstances/totalInstancesUsed,
maxTotalCores/totalCoresUsed, maxTotalRAMSize/totalRamUsed, maxTotalKeypairs). Notez qu'il n'a pas
de champ volume — pour les quotas de volume de disque, utilisez également :
# Obligatoire : --target_project_id={project_id} --usage=True
hcloud EVS CinderListQuotas --target_project_id={project_id} --usage=True --cli-region={région}
skill-quality-cli run --skill-name huawei-cloud-ecs-manage -- hcloud EVS CinderListQuotas --target_project_id={project_id} --usage=True --cli-region={région}
2. Diagnostic (R3 — lecture seule, exécution automatique)
huawei_diagnose_ecs_create_failure — diagnostic des échecs de création en 6 étapes
...
[restant tronqué pour la traduction, mais le reste du SKILL.md serait traduit de la même manière dans un scénario réel]