Erstellen von Zuordnungen, die Ansible-Playbooks ausführen - AWS Systems Manager

AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.

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.

Erstellen von Zuordnungen, die Ansible-Playbooks ausführen

Sie können State Manager-Zuordnungen erstellen, die Ansible-Playbooks ausführen, indem Sie das AWS-ApplyAnsiblePlaybooks-SSM-Dokument verwenden. State Manager ist ein Tool von AWS Systems Manager. Dieses Dokument bietet die folgenden Vorteile für die Ausführung von Playbooks:

  • Unterstützung für die Ausführung komplexer Playbooks

  • Support für das Herunterladen von Playbooks von GitHub und Amazon Simple Storage Service (Amazon S3)

  • Unterstützung der komprimierten Playbook-Struktur

  • Erweiterte Protokollierung

  • Möglichkeit, anzugeben, welches Playbook ausgeführt werden soll, wenn Playbooks gebündelt werden

Anmerkung

Systems Manager enthält zwei SSM-Dokumente, mit denen Sie State Manager-Zuordnungen erstellen können, die Ansible-Playbooks ausführen: AWS-RunAnsiblePlaybook und AWS-ApplyAnsiblePlaybooks. Das AWS-RunAnsiblePlaybook-Dokument ist veraltet. Es bleibt für Legacy-Zwecke in Systems Manager verfügbar. Wir empfehlen, dass Sie das AWS-ApplyAnsiblePlaybooks-Dokument aufgrund der hier beschriebenen Verbesserungen verwenden.

Zuordnungen, die Ansible-Playbooks ausführen, werden in macOS nicht unterstützt.

Unterstützung für die Ausführung komplexer Playbooks

Das AWS-ApplyAnsiblePlaybooks-Dokument unterstützt gebündelte, komplexe Playbooks, da es die gesamte Dateistruktur vor der Ausführung des angegebenen Haupt-Playbooks in ein lokales Verzeichnis kopiert. Sie können Quell-Playbooks in Zip-Dateien oder in einer Verzeichnisstruktur bereitstellen. Die Zip-Datei oder das Verzeichnis kann in GitHub oder Amazon S3 gespeichert werden.

Unterstützung für das Herunterladen von Playbooks von GitHub

Das AWS-ApplyAnsiblePlaybooks-Dokument verwendet das aws:downloadContent-Plugin zum Herunterladen von Playbook-Dateien. Dateien können in GitHub in einer einzigen Datei oder als kombinierte Gruppe von Playbook-Dateien gespeichert werden. Geben Sie Informationen über Ihr GitHub-Repository im JSON-Format an, um Inhalte von GitHub herunterzuladen. Ein Beispiel.

{ "owner":"TestUser", "repository":"GitHubTest", "path":"scripts/python/test-script", "getOptions":"branch:master", "tokenInfo":"{{ssm-secure:secure-string-token}}" }

Unterstützung für das Herunterladen von Playbooks von Amazon S3

Sie können Ansible-Playbooks auch in Amazon S3 als einzelne ZIP-Datei oder als Verzeichnisstruktur speichern und herunterladen. Geben Sie den Pfad zur Datei an, um Inhalte von Amazon S3 herunterzuladen. Nachfolgend finden Sie zwei Beispiele.

Beispiel 1: Herunterladen einer bestimmten Playbook-Datei

{ "path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/playbook.yml" }

Beispiel 2: Herunterladen des Inhalts eines Verzeichnisses

{ "path":"https://s3.amazonaws.com/amzn-s3-demo-bucket/ansible/webservers/" }
Wichtig

Wenn Sie Amazon S3 angeben, muss das AWS Identity and Access Management (IAM) -Instance-Profil auf Ihren verwalteten Knoten Berechtigungen für den S3-Bucket enthalten. Weitere Informationen finden Sie unter Erforderliche Instance-Berechtigungen für Systems Manager konfigurieren.

Unterstützung der komprimierten Playbook-Struktur

Mit dem AWS-ApplyAnsiblePlaybooks-Dokument können Sie komprimierte ZIP-Dateien im heruntergeladenen Paket ausführen. Das Dokument prüft, ob die heruntergeladenen Dateien eine komprimierte Datei im ZIP-Format enthalten. Wenn eine ZIP-Datei gefunden wird, dekomprimiert das Dokument die Datei automatisch und führt dann die angegebene Ansible-Automatisierung aus.

Erweiterte Protokollierung

Das AWS-ApplyAnsiblePlaybooks-Dokument enthält einen optionalen Parameter für die Angabe verschiedener Protokollierungsebenen. Geben Sie -v für niedrige Ausführlichkeit, -vv oder -vvv für mittlere Ausführlichkeit und -vvvv für die Protokollierung auf Debug-Ebene an. Diese Optionen werden direkt den Ansible-Ausführlichkeitsoptionen zugeordnet.

Möglichkeit, anzugeben, welches Playbook ausgeführt werden soll, wenn Playbooks gebündelt werden

Das AWS-ApplyAnsiblePlaybooks-Dokument enthält einen erforderlichen Parameter, um anzugeben, welches Playbook ausgeführt werden soll, wenn mehrere Playbooks gebündelt werden. Diese Option bietet Flexibilität für die Ausführung von Playbooks, um verschiedene Anwendungsfälle zu unterstützen.

Grundlegendes zu installierten Abhängigkeiten

Wenn Sie True für den InstallDependenciesParameter angeben, überprüft Systems Manager, ob auf Ihren Knoten die folgenden Abhängigkeiten installiert sind:

  • Ubuntu Server/Debian Server: Apt-get (Paketverwaltung), Python 3, Ansible, Unzip

  • Von Amazon Linux unterstützte Versionen: Ansible

  • RHEL: Python 3, Ansible, Entpacken

Wenn eine oder mehrere dieser Abhängigkeiten nicht gefunden werden, installiert Systems Manager sie automatisch.

Erstellen einer Zuordnung zur Ausführung von Ansible-Playbooks (Konsole)

Im folgenden Verfahren wird beschrieben, wie Sie mit der Systems-Manager-Konsole eine State Manager-Zuordnung erstellen, die Ansible-Playbooks mithilfe des AWS-ApplyAnsiblePlaybooks-Dokuments ausführt.

So erstellen Sie eine Zuordnung, die Ansible-Playbooks ausführt (Konsole)
  1. Öffnen Sie die AWS Systems Manager Konsole unter. https://console.aws.amazon.com/systems-manager/

  2. Wählen Sie im Navigationsbereich State Manager aus.

  3. Wählen Sie State Manager und dann Zuordnung wählen aus.

  4. Geben Sie unter Name einen Namen an, der Ihnen hilft, sich an den Zweck der Zuordnung zu erinnern.

  5. Wählen Sie in der Liste Dokument die Option AWS-ApplyAnsiblePlaybooks aus.

  6. Wählen Sie im Abschnitt Parameter für Source Type entweder GitHuboder S3 aus.

    GitHub

    Wenn Sie GitHub auswählen, geben Sie Repository-Informationen im folgenden Format ein.

    { "owner":"user_name", "repository":"name", "path":"path_to_directory_or_playbook_to_download", "getOptions":"branch:branch_name", "tokenInfo":"{{(Optional)_token_information}}" }

    S3

    Wenn Sie S3 auswählen, geben Sie Pfadinformationen im folgenden Format ein.

    { "path":"https://s3.amazonaws.com/path_to_directory_or_playbook_to_download" }
  7. Wählen Sie unter Install Dependencies (Abhängigkeiten installieren) eine Option aus.

  8. (Optional) Geben Sie unter Playbook File (Playbook-Datei) einen Dateinamen ein. Wenn eine Zip-Datei das Playbook enthält, geben Sie einen relativen Pfad zur Zip-Datei an.

  9. (Optional) Geben Sie unter Zusätzliche Variablen Variablen ein, die State Manager zur Laufzeit an Ansible senden soll.

  10. (Optional) Wählen Sie unter Check (Prüfen) eine Option aus.

  11. (Optional) Wählen Sie für Verbose eine Option aus.

  12. Wählen Sie für Ziele eine Option aus. Weitere Informationen zur Verwendung von Zielen finden Sie unter Verstehen von Zielen und Ratensteuerungen in State Manager Zuordnungen.

  13. Wählen Sie im Abschnitt Specify schedule (Zeitplan angeben) entweder On schedule (Nach Zeitplan) oder No schedule (Kein Zeitplan) aus. Wenn Sie On schedule (Nach Zeitplan) auswählen, verwenden Sie die verfügbaren Schaltflächen zum Erstellen eines cron- oder rate-Zeitplans für die Zuordnung.

  14. Wählen Sie im Abschnitt Advanced options (Erweiterte Optionen) für Compliance severity (Compliance-Schweregrad) einen Schweregrad für die Zuordnung aus. In den Compliance-Berichten finden Sie Informationen dazu, ob die Zuordnung konform ist, zusammen mit dem Schweregrad, den Sie hier angeben. Weitere Informationen finden Sie unter Informationen zu State Manager-Zuordnungs-Compliance.

  15. Konfigurieren Sie im Abschnitt Rate control (Ratensteuerung) Optionen für die Ausführung von State Manager-Zuordnungen in der Flotte von verwalteten Knoten. Weitere Informationen über Ratensteuerungen finden Sie unter Verstehen von Zielen und Ratensteuerungen in State Manager Zuordnungen.

    Wählen Sie im Abschnitt Gleichzeitigkeit eine Option aus:

    • Wählen Sie Ziele aus, um eine absolute Anzahl von Zielen einzugeben, die die Zuordnung gleichzeitig ausführen können.

    • Wählen Sie Prozentsatz aus, um einen Prozentsatz der Ziele anzugeben, die die Zuordnung gleichzeitig ausführen können.

    Wählen Sie im Abschnitt Fehlerschwellenwert eine Option aus:

    • Wählen Sie Fehler aus und geben Sie die absolute Anzahl erlaubter Fehler an, bis State Manager die Ausführung von Zuordnungen für weitere Ziele beendet.

    • Wählen Sie Prozentsatz aus und geben Sie den Prozentsatz erlaubter Fehler an, bis State Manager die Ausführung von Zuordnungen für weitere Ziele beendet.

  16. (Optional) Wenn Sie im Abschnitt Ausgabeoptionen die Befehlsausgabe in einer Datei speichern möchten, aktivieren Sie das Kontrollkästchen Schreiben der Ausgabe in S3 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 die Berechtigungen des dem verwalteten Knoten zugewiesenen Instance-Profils 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.

  17. Wählen Sie Zuordnung erstellen.

Anmerkung

Wenn Sie auf einer oder mehreren Knoten eine Assoziation anhand von Tags erstellen und von einem dieser Knoten die Tags entfernen, wird die Assoziation auf diesem Knoten nicht mehr ausgeführt. Die Assoziazion zwischen dem Knoten und dem State Manager-Dokument ist aufgehoben.

Erstellen einer Zuordnung zur Ausführung von Ansible-Playbooks (CLI)

Im folgenden Verfahren wird beschrieben, wie Sie mit AWS Command Line Interface (AWS CLI) eine State Manager Assoziation erstellen, die Ansible Playbooks mithilfe des AWS-ApplyAnsiblePlaybooks Dokuments ausführt.

So erstellen Sie eine Zuordnung, die Ansible-Playbooks ausführt (CLI)
  1. Installieren und konfigurieren Sie AWS Command Line Interface (AWS CLI), falls Sie dies noch nicht getan haben.

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

  2. Führen Sie einen der folgenden Befehle aus, um eine Zuordnung zu erstellen, die Ansible-Playbooks ausführt, indem Knoten mithilfe von Tags angesprochen werden. Ersetzen Sie jeden example resource placeholder durch Ihre Informationen. Befehl (A) gibt GitHub als Quelltyp an. Befehl (B) gibt Amazon S3 als Quelltyp an.

    (Eine) GitHub Quelle

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"],"TimeoutSeconds":["3600"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"name\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"], "TimeoutSeconds":["3600"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Ein Beispiel.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ansibleDocumentTest\", \"repository\": \"Ansible\", \"getOptions\": \"branch:master\"}"],"InstallDependencies":["True"],"PlaybookFile":["hello-world-playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"

    (B) S3-Quelle

    Linux & macOS
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_playbook_to_download\"}"],"InstallDependencies":["True_or_False"],"PlaybookFile":["file_name.yml"],"ExtraVariables":["key/value_pairs_separated_by_a_space"],"Check":["True_or_False"],"Verbose":["-v,-vv,-vvv, or -vvvv"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

    Ein Beispiel.

    aws ssm create-association --name "AWS-ApplyAnsiblePlaybooks" \ --targets "Key=tag:OS,Values=Linux" \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/playbook.yml\"}"],"InstallDependencies":["True"],"PlaybookFile":["playbook.yml"],"ExtraVariables":["SSM=True"],"Check":["False"],"Verbose":["-v"]}' \ --association-name "AnsibleAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"
    Anmerkung

    State Manager-Zuordnungen unterstützen nicht alle Cron- und Rate-Ausdrücke. Weitere Informationen zum Erstellen von Cron- und Rate-Ausdrücken für Zuordnungen finden Sie unter Referenz: Cron- und Rate-Ausdrücke für System Manager.

    Das System versucht, die Assoziation auf den Knoten zu erstellen und den Status sofort anzuwenden.

  3. Führen Sie den folgenden Befehl aus, um einen aktualisierten Status der soeben erstellten Zuordnung anzuzeigen.

    aws ssm describe-association --association-id "ID"