Exemplarische Vorgehensweise: Verknüpfungen erstellen, die Playbooks ausführen Ansible - AWS Systems Manager

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.

Exemplarische Vorgehensweise: Verknüpfungen erstellen, die Playbooks ausführen Ansible

Mithilfe des Dokuments können Sie State Manager Verknüpfungen erstellen, die Ansible Playbooks ausführen. AWS-ApplyAnsiblePlaybooks SSM State Managerist eine Fähigkeit 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 Verknüpfungen erstellen können, die Ansible Playbooks ausführen: AWS-RunAnsiblePlaybook undAWS-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.

Verknüpfungen, die Ansible Playbooks ausführen, werden auf nicht unterstützt. macOS

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 Amazon S3 gespeichert werden.

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

Das AWS-ApplyAnsiblePlaybooks-Dokument verwendet das aws:downloadContent-Plug-in zum Herunterladen von Playbook-Dateien. Dateien können GitHub in einer einzelnen Datei oder als kombinierter Satz von Playbook-Dateien gespeichert werden. Um Inhalte herunterzuladenGitHub, geben Sie Informationen über Ihr GitHub Repository im JSON Format an. 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 entweder 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 Instance-Profil AWS Identity and Access Management (IAM) auf Ihren verwalteten Knoten mit der AmazonS3ReadOnlyAccess Richtlinie konfiguriert werden. Weitere Informationen finden Sie unter Konfigurieren der für Systems Manager erforderlichen Instanzberechtigungen.

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 Automatisierung aus. Ansible

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 sind direkt den Ausführlichkeitsoptionen zugeordnetAnsible.

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.

Installierte 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 Entpacken

  • Amazon Linux: Ansible

  • RHEL: Python 3Ansible, Entpacken

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

Erstellen Sie eine Assoziation, die Ansible Playbooks ausführt (Konsole)

Das folgende Verfahren beschreibt, wie Sie mit der Systems Manager Manager-Konsole eine State Manager Assoziation erstellen, die Ansible Playbooks mithilfe des AWS-ApplyAnsiblePlaybooks Dokuments ausführt.

So erstellen Sie eine Assoziation, 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 Create association (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 möchten GitHub, geben Sie die 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, an die Sie zur Ansible Laufzeit senden möchtenState Manager.

  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 Targets (Ziele) eine Option aus. Weitere Informationen zur Verwendung von Zielen finden Sie unter Informationen zu 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 Informationen zu Zielen und Ratensteuerungen in State Manager Zuordnungen.

    Wählen Sie im Abschnitt Concurrency (Gleichzeitigkeit) eine Option aus:

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

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

    Wählen Sie im Abschnitt Error threshold (Fehlerschwellenwert) eine Option aus:

    • Wählen Sie Errors (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 Percentage (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, die das Schreiben der Daten in einen S3-Bucket ermöglichen, entsprechen denen des Instanzprofils, das dem verwalteten Knoten zugewiesen ist, und nicht denen des IAM Benutzers, der diese Aufgabe ausführt. Weitere Informationen finden Sie unter Konfigurieren der für Systems Manager erforderlichen Instanzberechtigungen oder Erstellen einer IAM Servicerolle für eine Hybridumgebung. Wenn sich der angegebene S3-Bucket in einem anderen befindet, stellen Sie außerdem sicher AWS-Konto, dass das Instanzprofil oder die IAM Servicerolle, die dem verwalteten Knoten zugeordnet sind, über die erforderlichen Berechtigungen verfügt, um in diesen Bucket zu schreiben.

  17. Wählen Sie Create Association.

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 Sie eine Assoziation, die Ansible Playbooks () CLI ausführt

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

Um eine Assoziation zu erstellen, 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 Assoziation zu erstellen, die Ansible Playbooks ausführt, indem sie mithilfe von Tags auf Knoten abzielt. Ersetzen Sie jeden example resource placeholder mit Ihren eigenen Informationen. Befehl (A) gibt GitHub als Quelltyp an. Befehl (B) gibt Amazon S3 als Quelltyp an.

    (A) 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"