Verwenden der AWS OpsWorks Stacks Agent CLI - AWS OpsWorks

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der AWS OpsWorks Stacks Agent CLI

Wichtig

Der AWS OpsWorks Stacks Service hat am 26. Mai 2024 das Ende seiner Lebensdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an das AWS Support Team auf AWS re:POST oder über den AWS Premium-Support.

Anmerkung

Die Agenten-CLI ist nur für Linux-Instances verfügbar.

Auf jeder Online-Instanz installiert AWS OpsWorks Stacks einen Agenten, der mit dem Dienst kommuniziert. Der AWS OpsWorks Stacks-Dienst wiederum sendet Befehle an den Agenten, um Aufgaben wie das Initiieren von Chef-Läufen auf der Instanz auszuführen, wenn ein Lebenszyklusereignis eintritt. Auf Linux-Instances stellt der Agent eine Befehlszeilenschnittstelle (Command Line Interface, CLI) bereit, die für die Fehlerbehebung sehr nützlich ist. Um Agenten-CLI-Befehle auszuführen, verwenden Sie SSH , um eine Verbindung mit einer Instance herzustellen. Anschließend können Sie Agenten-CLI-Befehle ausführen, um eine Vielzahl an Aufgaben durchzuführen, einschließlich der folgenden:

Weitere Informationen zum Einrichten einer SSH-Verbindung zu einer Instance finden Sie unter Anmelden mit SSH. Zudem müssen Sie über SSH- und Sudo-Berechtigungen für den Stack verfügen.

In diesem Abschnitt wird beschrieben, wie Sie die Agenten-CLI für die Fehlerbehebung verwenden. Weitere Informationen und eine vollständige Befehlsreferenz finden Sie unter AWS OpsWorks Stacks Agent CLI.

Ausführen von Rezepten

Der Agenten-CLI-Befehl run_command weist den Agenten an, einen bereits zuvor durchgeführten Befehl erneut auszuführen. Die wichtigsten Befehle für die Fehlerbehebung – setup, configure, deploy und undeploy – entsprechen jeweils einem Lebenszyklusereignis. Sie weisen den Agenten an, eine Chef-Ausführung zu initiieren, um die zugehörigen Rezepte auszuführen.

Anmerkung

Der Befehl run_command ist auf die Ausführung der Rezeptgruppe begrenzt, die einem bestimmten Befehl zugeordnet ist, in der Regel die Rezepte, die mit einem Lebenszyklusereignis verknüpft sind. Sie können ihn nicht verwenden, um ein bestimmtes Rezept auszuführen. Um ein oder mehrere angegebene Rezepte auszuführen, verwenden Sie den Stack-Befehl Execute Recipes (Rezepte ausführen) oder die entsprechenden CLI- oder API-Aktionen (create-deployment und CreateDeployment).

Der Befehl run_command ist für das Debuggen benutzerdefinierter Rezepte nützlich, besonders Rezepten, die der Einrichtung und Konfiguration von Lebenszyklusereignissen zugewiesen sind, die Sie nicht direkt über die Konsole auslösen können. Durch die Verwendung von run_command können Sie die Rezepte eines bestimmten Ereignisses so häufig wie nötig ausführen, ohne dass Sie Instances starten oder beenden müssen.

Anmerkung

AWS OpsWorks Stacks führt Rezepte aus dem Kochbuch-Cache der Instanz aus, nicht aus dem Kochbuch-Repository. AWS OpsWorks Stacks lädt beim Start der Instanz Kochbücher in diesen Cache herunter, aktualisiert den Cache auf Online-Instanzen jedoch nicht automatisch, wenn Sie Ihre Kochbücher nachträglich ändern. Wenn Sie Ihre Rezeptbücher seit dem Start der Instance geändert haben, müssen Sie den Stack-Befehl zum Aktualisieren der Rezeptbücher ausführen, um den Rezeptbuchzwischenspeicher mit der neuesten Version aus dem Repository zu aktualisieren.

Nur die neuesten Befehle werden vom Agenten zwischengespeichert. Sie können sie auflisten, indem Sie list_commands ausführen, welches eine Liste der zwischengespeicherten Befehle und die Zeit, in der die Operationen ausgeführt wurden, zurückgibt.

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

Um den neuesten Befehl erneut auszuführen, führen Sie dies aus:

sudo opsworks-agent-cli run_command

Um die neueste Instance eines angegebenen Befehls erneut auszuführen, führen Sie dies aus:

sudo opsworks-agent-cli run_command command

Um beispielsweise die Schritte zum Einrichten der Rezepte erneut durchzuführen, können Sie den folgenden Befehl ausführen:

sudo opsworks-agent-cli run_command setup

Jeder Befehl verfügt über eine zugewiesene Stack-Konfiguration und JSON-Bereitstellung, in der der Stack- und Bereitstellungsstatus zum Zeitpunkt der Befehlsausführung angegeben ist. Da sich diese Daten von einem Befehl zum nächsten ändern können, kann eine ältere Instance eines Befehls etwas andere Daten verwenden als die neueste. Um eine bestimmte Instance eines Befehls erneut auszuführen, kopieren Sie die Zeit von der Ausgabe list_commands und führen Sie die folgenden Schritte aus:

sudo opsworks-agent-cli run_command time

Die vorherigen Beispiele führen alle den Befehl erneut aus, indem sie das Standard-JSON-Format verwenden, das heißt, dass das JSON-Format für diesen Befehl installiert wurde. Sie können einen Befehl anhand einer beliebigen JSON-Datei wie folgt erneut ausführen:

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

Anzeigen von Chef-Protokollen

Der Agenten-CLI-Befehl show_log zeigt ein bestimmtes Protokoll an. Nachdem der Befehl abgeschlossen ist, werden Sie das Dateiende sehen. Der Befehl show_log bietet daher eine bequeme Möglichkeit, das Protokoll zu fragmentieren, in dem Sie normalerweise die Fehlerinformationen finden. Sie können nach oben navigieren, um die früheren Teile des Protokolls zu sehen.

Um das aktuelle Protokoll des Befehls einzusehen, führen Sie dies aus:

sudo opsworks-agent-cli show_log

Sie können auch Protokolle für einen bestimmten Befehl anzeigen, beachten Sie jedoch, dass der Agent nur Protokolle der letzten 30 Befehle zwischenspeichert. Sie können Befehle einer Instance auflisten, indem Sie list_commands ausführen, wodurch eine Liste der zwischengespeicherten Befehle und die Zeit, in der die Operationen ausgeführt wurden, zurückgegeben werden. Ein Beispiel finden Sie unter Ausführen von Rezepten.

Um das Protokoll für die neueste Ausführung eines bestimmten Befehls anzuzeigen, führen Sie die folgenden Schritte aus:

sudo opsworks-agent-cli show_log command

Der Befehlsparameter kann auf setup, configure, deploy, undeploy, start, stop oder restart gesetzt werden. Die meisten dieser Befehle entsprechen Lebenszyklusereignissen und weisen den Agenten an, die zugehörigen Rezepte auszuführen.

Um das Protokoll für eine bestimmte Befehlsausführung anzuzeigen, kopieren Sie das Datum aus der Ausgabe list_commands und führen Folgendes aus:

sudo opsworks-agent-cli show_log date

Wenn ein Befehl noch ausgeführt wird, zeigt show_log den aktuellen Zustand des Protokolls an.

Anmerkung

Eine Möglichkeit, Fehler und out-of-memory Probleme show_log zu beheben, besteht darin, ein Protokoll während der Ausführung wie folgt zu protokollieren:

  1. Verwenden Sie run_command, um das entsprechende Lebenszyklusereignis auszulösen. Weitere Informationen finden Sie unter Ausführen von Rezepten.

  2. Führen Sie show_log mehrmals aus, um zu sehen, wie das Protokollfragment geschrieben wird.

Wenn Chef nicht genügend Arbeitsspeicher zur Verfügung steht oder es unerwartet beendet wird, wird das Protokoll abrupt beendet. Wenn ein Rezept fehlschlägt, wird das Protokoll mit einer Ausnahme und einem Stack-Trace beendet.

Anzeigen der Stack-Konfiguration und der JSON-Bereitstellung

Ein Großteil der Daten, die von Rezepten verwendet werden, stammen von der Stack-Konfiguration und JSON-Bereitstellung, die eine Reihe von Chef-Attributen definieren, die eine detaillierte Beschreibung der Stack-Konfiguration, alle Bereitstellungen und optionale benutzerdefinierte Attribute, die Benutzer hinzufügen können, bereitstellen. Für jeden Befehl installiert AWS OpsWorks Stacks eine JSON-Datei, die den Stack und den Bereitstellungsstatus zum Zeitpunkt des Befehls darstellt. Weitere Informationen finden Sie unter Attribute für die Stack-Konfiguration und -Bereitstellung.

Wenn Ihre benutzerdefinierten Rezepte die Daten aus der Stack-Konfiguration und JSON-Bereitstellung erhalten, können Sie die Daten überprüfen, indem Sie das JSON-Objekt überprüfen. Die einfachste Methode zur Anzeige der Stack-Konfiguration und JSON-Bereitstellung ist, den Agenten-CLI-Befehl get_json auszuführen, der eine formatierte Version des JSON-Objekts anzeigt. Das folgende Beispiel zeigt die ersten Zeilen einiger typischer Ausgaben:

{ "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" ...

Sie können die neueste Stack-Konfiguration und JSON-Bereitstellung wie folgt anzeigen:

sudo opsworks-agent-cli get_json

Sie können die neueste Stack-Konfiguration und JSON-Bereitstellung für einen bestimmten Befehl anzeigen, indem Sie den folgenden Befehl ausführen:

sudo opsworks-agent-cli get_json command

Der Befehlsparameter kann auf setup, configure, deploy, undeploy, start, stop oder restart gesetzt werden. Die meisten dieser Befehle entsprechen Lebenszyklusereignissen und weisen den Agenten an, die zugehörigen Rezepte auszuführen.

Sie können die Stack-Konfiguration und JSON-Bereitstellung für eine bestimmte Befehlsausführung anzeigen, indem Sie das Datum des Befehls wie folgt angeben:

sudo opsworks-agent-cli get_json date

Die einfachste Möglichkeit zur Verwendung dieses Befehls ist:

  1. Führen Sie list_commands aus, welches eine Liste der Befehle, die in der Instance ausgeführt wurden, und das Datum, an dem jeder Befehl ausgeführt wurde, zurückgibt.

  2. Kopieren Sie das Datum für den entsprechenden Befehl und nutzen Sie es als das get_json Datums-Argument.