Utilisation de la CLI AWS OpsWorks de l'agent Stacks - AWS OpsWorks

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de la CLI AWS OpsWorks de l'agent Stacks

Important

Le AWS OpsWorks Stacks service a atteint sa fin de vie le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez l' AWS Support équipe sur AWS Re:Post ou via le AWS Support Premium.

Note

L'interface de ligne de commande de l'agent est disponible uniquement sur les instances Linux.

Sur chaque instance en ligne, AWS OpsWorks Stacks installe un agent qui communique avec le service. Le service AWS OpsWorks Stacks envoie à son tour des commandes à l'agent pour effectuer des tâches telles que le lancement des exécutions de Chef sur l'instance lorsqu'un événement du cycle de vie se produit. Sur les instances Linux, l'agent expose une interface de ligne de commande (CLI) qui est très utile pour le dépannage. Pour exécuter les commandes de l'interface de ligne de commande de l'agent, utilisez SSH pour vous connecter à une instance. Vous pouvez ensuite exécuter les commandes de l'interface de ligne de commande de l'agent pour effectuer diverses tâches, y compris les suivantes :

Pour plus d'informations sur la configuration d'une connexion SSH à une instance, consultez Connexion avec SSH. Vous devez également disposer d'autorisations SSH et sudo pour la pile.

Cette section décrit comment utiliser l'interface de ligne de commande de l'agent pour le dépannage. Pour plus d'informations et une référence complète sur les commandes, consultez AWS OpsWorks CLI de l'agent Stacks.

Exécution des recettes

La commande run_command de l'interface de ligne de commande de l'agent demande à l'agent d'exécuter à nouveau une commande qu'il a déjà effectuée. Les commandes les plus utiles pour le dépannage, setup, configure, deploy et undeploy, correspondent chacune à un événement du cycle de vie. Elles demandent à l'agent de lancer une exécution de Chef afin d'exécuter les recettes associées.

Note

La commande run_command est limitée à l'exécution du groupe de recettes qui est associé à une commande spécifique, généralement les recettes qui sont associées à un événement du cycle de vie. Vous ne pouvez pas l'utiliser pour exécuter une recette particulière. Pour exécuter une ou plusieurs recettes spécifiées, utilisez la commande de pile Execute Recipes ou les actions équivalentes de l'API ou de l'interface de ligne de commande (create-deployment et CreateDeployment).

La commande run_command est très utile pour le débogage des recettes personnalisées, en particulier les recettes qui sont affectées aux événements du cycle de vie Setup et Configure, que vous ne pouvez pas déclencher directement à partir de la console. En utilisant run_command, vous pouvez exécuter les recettes d'un événement particulier aussi souvent que nécessaire sans avoir à démarrer ou interrompre les instances.

Note

AWS OpsWorks Stacks exécute les recettes à partir du cache du livre de recettes de l'instance, et non du référentiel de livres de recettes. AWS OpsWorks Stacks télécharge les livres de recettes dans ce cache au démarrage de l'instance, mais ne met pas automatiquement à jour le cache sur les instances en ligne si vous modifiez ultérieurement vos livres de recettes. Si vous avez modifié vos livres de recettes depuis le début de l'instance, assurez-vous d'exécuter la commande de pile Update Cookbooks (Mettre à jour les livres de recettes) pour mettre à jour le cache des livres de recettes avec la version la plus récente du référentiel.

L'agent met en cache uniquement les commandes les plus récentes. Vous pouvez les lister en exécutant list_commands, qui retourne une liste des commandes mises en cache et du moment où elles ont été effectuées.

sudo opsworks-agent-cli list_commands 2013-02-26T19:08:26 setup 2013-02-26T19:12:01 configure 2013-02-26T19:12:05 configure 2013-02-26T19:22:12 deploy

Pour exécuter à nouveau la commande la plus récente, exécutez ceci :

sudo opsworks-agent-cli run_command

Pour exécuter à nouveau l'instance la plus récente d'une commande spécifiée, exécutez ceci :

sudo opsworks-agent-cli run_command command

Par exemple, pour exécuter à nouveau les recettes Setup, vous pouvez exécuter la commande suivante :

sudo opsworks-agent-cli run_command setup

Chaque commande a un JSON de configuration et de déploiement de la pile associé, qui représente l'état de la pile et du déploiement au moment de l'exécution de la commande. Etant donné que ces données peuvent changer d'une commande à l'autre, une instance plus ancienne d'une commande peut utiliser des données légèrement différentes des plus récentes. Pour exécuter à nouveau une instance particulière d'une commande, copiez le temps de la sortie list_commands et exécutez les éléments suivants :

sudo opsworks-agent-cli run_command time

Les exemples précédents exécutent tous à nouveau la commande à l'aide du JSON par défaut, c'est-à-dire le JSON qui a été installé pour cette commande. Vous pouvez exécuter à nouveau une commande sur un fichier JSON arbitraire comme suit :

sudo opsworks-agent-cli run_command -f /path/to/valid/json.file

Affichage des journaux de Chef

La commande show_log de l'interface de ligne de commande de l'agent affiche un journal spécifié. Une fois la commande terminée, observez la fin du fichier. La commande show_log fournit donc un moyen pratique de consulter la queue du journal, où se trouvent généralement les informations relatives aux erreurs. Vous pouvez faire défiler vers le haut pour afficher les premières parties du journal.

Pour afficher le journal de la commande en cours, exécutez ceci :

sudo opsworks-agent-cli show_log

Vous pouvez également afficher les journaux d'une commande donnée, mais sachez que l'agent met en cache les journaux des trente dernières commandes seulement. Vous pouvez afficher les commandes d'une instance en exécutant list_commands, qui retourne une liste des commandes mises en cache et l'heure où elles ont été effectuées. Pour obtenir un exemple, consultez Exécution des recettes.

Pour afficher le journal de la dernière exécution d'une commande spécifique, exécutez ce qui suit :

sudo opsworks-agent-cli show_log command

Le paramètre de la commande peut être défini sur setup, configure, deploy, undeploy, start, stop ou restart. La plupart de ces commandes correspondent aux événements de cycle de vie et demandent à l'agent d'exécuter les recettes associées.

Pour afficher le journal pour une exécution de commande particulière, copiez la date de la sortie list_commands et exécutez :

sudo opsworks-agent-cli show_log date

Si une commande est toujours en cours d'exécution, show_log affiche l'état actuel du journal.

Note

L'un des moyens show_log de résoudre les erreurs et les out-of-memory problèmes consiste à suivre un journal pendant l'exécution, comme suit :

  1. Utilisez run_command pour déclencher l'événement du cycle de vie approprié. Pour plus d’informations, consultez Exécution des recettes.

  2. Exécutez plusieurs fois show_log pour voir la queue du journal tel qu'il est écrit.

Si Chef manque de mémoire ou se ferme de façon impromptue, le journal se termine brutalement. Si une recette échoue, le journal se terminera par une exception et une trace de la pile.

Affichage du JSON de configuration et de déploiement de la pile

La plupart des données utilisées par les recettes proviennent du JSON de configuration et de déploiement de la pile, qui définit un ensemble d'attributs de Chef fournissant une description détaillée de la configuration de la pile, des déploiements et des attributs personnalisés en option que les utilisateurs peuvent ajouter. Pour chaque commande, AWS OpsWorks Stacks installe un JSON qui représente la pile et l'état du déploiement au moment de la commande. Pour plus d’informations, consultez Attributs de déploiement et de configuration de pile.

Si vos recettes personnalisées obtiennent du JSON de configuration et de déploiement de la pile, vous pouvez vérifier les données en examinant le JSON. Le plus simple pour afficher le JSON de configuration et de déploiement de la pile consiste à exécuter la commande get_json de l'interface de ligne de commande de l'agent, qui affiche une version formatée de l'objet JSON. Voici les premières lignes de certaines sorties types :

{ "opsworks": { "layers": { "php-app": { "id": "4a2a56c8-f909-4b39-81f8-556536d20648", "instances": { "php-app2": { "elastic_ip": null, "region": "us-west-2", "booted_at": "2013-02-26T20:41:10+00:00", "ip": "10.112.235.192", "aws_instance_id": "i-34037f06", "availability_zone": "us-west-2a", "instance_type": "c1.medium", "private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal", "private_ip": "10.252.0.203", "created_at": "2013-02-26T20:39:39+00:00", "status": "online", "backends": 8, "public_dns_name": "ec2-10-112-235-192.us-west-2.compute.amazonaws.com" ...

Vous pouvez afficher le JSON de configuration et de déploiement de la pile le plus récent comme suit :

sudo opsworks-agent-cli get_json

Vous pouvez afficher le JSON de configuration et de déploiement de la pile le plus récent pour une commande spécifiée en exécutant ce qui suit :

sudo opsworks-agent-cli get_json command

Le paramètre de la commande peut être défini sur setup, configure, deploy, undeploy, start, stop ou restart. La plupart de ces commandes correspondent aux événements de cycle de vie et demandent à l'agent d'exécuter les recettes associées.

Vous pouvez afficher le JSON de configuration et de déploiement de la pile pour une exécution de commande spécifique en spécifiant la date de la commande comme suit :

sudo opsworks-agent-cli get_json date

La façon la plus simple d'utiliser cette commande est la suivante :

  1. Exécutez list_commands, qui retourne une liste des commandes ayant été exécutées sur l'instance et la date à laquelle chaque commande a été exécutée.

  2. Copiez la date de la commande appropriée et utilisez-la en tant qu'argument get_json date.