Ansible-Playbooks ausführen von GitHub - AWS Systems Manager

Ansible-Playbooks ausführen von GitHub

Dieser Abschnitt beschreibt Verfahren zum Ausführen von Ansible Playbooks von GitHub mithilfe der Konsole oder der AWS Command Line Interface (AWS CLI).

Bevor Sie beginnen

Erstellen Sie einen AWS Systems Manager SecureString-Parameter für Ihr GitHub-Sicherheitszugriffstoken, wenn Sie ein Skript ausführen möchten, das in einem privaten GitHub-Repository gespeichert ist. Sie können nicht auf ein Skript in einem privaten GitHub-Repository zugreifen, indem Sie Ihr Token manuell über SSH übergeben. Das Zugriffstoken muss als SecureString-Systems Manager-Parameter übertragen werden. Weitere Informationen zum Erstellen eines SecureString-Parameters finden Sie unter Parameter Store-Parameter im Systems Manager erstellen.

Führen Sie ein Ansible-Playbook von GitHub (Konsole) aus

Ansible-Playbooks von GitHub ausführen
  1. Öffnen Sie die AWS Systems Manager-Konsole unter https://console.aws.amazon.com/systems-manager/.

  2. Wählen Sie im Navigationsbereich Run Command aus.

  3. Wählen Sie Befehl ausführen aus.

  4. Wählen Sie in der Liste Befehlsdokument die Option AWS-RunRemoteScript aus.

  5. Führen Sie unter Command parameters die folgenden Schritte aus:

    • Wählen Sie unter Quelltyp die GitHub aus.

    • Geben Sie im Feld Source Info die für den Zugriff auf die Quelle erforderlichen Informationen im folgenden Format an.

      { "owner": "owner_name", "repository": "repository_name", "getOptions": "branch:branch_name", "path": "path_to_scripts_or_directory", "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}" }

      Dieses Beispiel lädt eine Datei mit dem Namen webserver.yml herunter.

      { "owner": "TestUser1", "repository": "GitHubPrivateTest", "getOptions": "branch:myBranch", "path": "scripts/webserver.yml", "tokenInfo": "{{ssm-secure:mySecureStringParameter}}" }
      Anmerkung

      "branch" ist nur erforderlich, wenn Ihr SSM-Dokument in einer anderen Verzweigung als master gespeichert ist.

      Um die Version Ihrer Skripts zu verwenden, die sich in einem bestimmten Commit in Ihrem Repository befinden, verwenden Sie commitID mit getOptionsstatt branch. Beispielsweise:

      "getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",

    • Geben Sie im Feld Command Line Parameter für die Skriptausführung ein. Ein Beispiel.

      ansible-playbook -i “localhost,” --check -c local webserver.yml

    • (Optional) Geben Sie im Feld Working Directory (Arbeitsverzeichnis) den Namen eines Verzeichnisses auf dem Knoten ein, auf dem das Skript heruntergeladen und ausgeführt werden soll.

    • (Optional) Geben Sie unter Execution Timeout die Dauer in Sekunden an, bis das System die Skriptbefehlausführung fehlschlagen lässt.

  6. Identifizieren Sie für den Abschnitt Ziele die verwalteten Knoten, auf denen Sie diese Operation ausführen möchten, indem Sie Tags angeben, Instances oder Edge-Geräte manuell auswählen oder eine Ressourcengruppe angeben.

    Tipp

    Wenn ein verwalteter Knoten, den Sie erwarten, nicht aufgeführt ist, finden Sie weitere Informationen unter Problembehandlung bei der Verfügbarkeit verwalteter Knoten Tipps zur Fehlerbehebung.

  7. Für Weitere Parameter:

    • Geben Sie im Feld Kommentar Informationen zu diesem Befehl ein.

    • Geben Sie für Timeout (Sekunden) in Sekunden an, wie lange gewartet werden soll, bis für die gesamte Befehlsausführung ein Fehler auftritt.

  8. Für Ratenregelung:

    • Geben Sie unter Nebenläufigkeit entweder eine Zahl oder einen Prozentsatz der verwalteten Knoten an, auf denen der Befehl gleichzeitig ausgeführt werden soll.

      Anmerkung

      Wenn Sie Ziele ausgewählt haben, indem Sie Tags angeben, die auf verwaltete Knoten angewendet werden, oder indem Sie AWS-Ressourcengruppen angeben, und Sie noch nicht sicher sind, wie viele verwaltete Knoten anvisiert sind, sollten Sie die Anzahl von Zielen, die das Dokument gleichzeitig ausführen kann, beschränken, indem Sie einen Prozentsatz angeben.

    • Geben Sie unter Fehlerschwellenwert an, wann die Ausführung des Befehls auf anderen verwalteten Knoten beendet werden soll, nachdem dafür entweder auf einer bestimmten Anzahl oder einem Prozentsatz von Knoten ein Fehler aufgetreten ist. Falls Sie beispielsweise drei Fehler angeben, sendet Systems Manager keinen Befehl mehr, wenn der vierte Fehler empfangen wird. Von verwalteten Knoten, auf denen der Befehl noch verarbeitet wird, werden unter Umständen ebenfalls Fehler gesendet.

  9. (Optional) Wenn Sie im Abschnitt Ausgabeoptionen die Befehlsausgabe in einer Datei speichern möchten, aktivieren Sie das Kontrollkästchen Schreiben in einen S3-Bucket aktivieren. Geben Sie die Namen für den Bucket und das Präfix (Ordner) in die Textfelder ein.

    Anmerkung

    Die S3-Berechtigungen zum Schreiben von Daten in einen S3-Bucket sind diejenigen des Instance-Profils (für EC2-Instances) oder der IAM-Servicerolle (hybrid-aktivierte Maschinen), die der Instance zugewiesen sind, und nicht diejenigen des IAM-Benutzers, der diese Aufgabe ausführt. Weitere Informationen finden Sie unter Instance-Berechtigungen für Systems Manager konfigurieren oder Eine IAM-Servicerolle für eine Hybrid-Umgebung erstellen. Wenn sich der angegebene S3-Bucket in einem anderen AWS-Konto befindet, stellen Sie außerdem sicher, dass das Instance-Profil oder die IAM-Servicerolle, die dem verwalteten Knoten zugeordnet ist, über die erforderlichen Berechtigungen zum Schreiben in diesen Bucket verfügt.

  10. Aktivieren Sie das Kontrollkästchen SNS-Benachrichtigungen aktivieren im Abschnitt SNS-Benachrichtigungen, wenn Sie über den Status der Befehlsausführung benachrichtigt werden möchten,

    Weitere Informationen zum Konfigurieren von Amazon-SNS-Benachrichtigungen für Run Command finden Sie unter Überwachung von Systems Manager-Statusänderungen mit Amazon SNS-Benachrichtigungen.

  11. Wählen Sie Ausführen aus.

Ausführen eines Ansible Playbooks von GitHub mithilfe der AWS CLI

  1. Installieren und konfigurieren Sie AWS Command Line Interface (AWS CLI), wenn noch nicht erfolgt.

    Weitere Informationen finden Sie unter Installieren oder Aktualisieren der neuesten Version von AWS CLI.

  2. Führen Sie den folgenden Befehl aus, um ein Skript von GitHub herunterzuladen und auszuführen.

    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --instance-ids "instance-IDs"\ --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'

    Hier ist ein Beispielbefehl für die Ausführung auf einem lokalen Linux-Computer.

    aws ssm send-command \ --document-name "AWS-RunRemoteScript" \ --instance-ids "i-02573cafcfEXAMPLE" \ --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'