Erstellen von Zuordnungen, die Chef-Rezepte 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 Chef-Rezepte ausführen

Sie können State Manager-Zuordnungen erstellen, die Chef-Rezepte ausführen, indem Sie das AWS-ApplyChefRecipes-SSM-Dokument verwenden. State Manager ist ein Tool von AWS Systems Manager. Sie können mit dem AWS-ApplyChefRecipes SSM-Dokument eine Ausrichtung auf Linux-basierte verwaltete Systems Manager-Knoten verwenden. Dieses Dokument bietet die folgenden Vorteile für die Ausführung von Chef-Rezepten:

  • Unterstützt mehrere Versionen von Chef (Chef 11 bis Chef 18).

  • Installiert die Chef-Clientsoftware automatisch auf Ziel-Knoten.

  • Führt optional Systems Manager-Compliance-Prüfungen für Ziel-Knoten aus und speichert die Ergebnisse der Compliance-Prüfungen in einem Amazon Simple Storage Service (Amazon S3)-Bucket.

  • Führt mehrere Cookbooks und Rezepte in einem einzigen Durchlauf des Dokuments aus.

  • Führt optional Rezepte im why-run-Modus aus, um anzuzeigen, welche Rezepte sich auf Ziel-Knoten ändern, ohne Änderungen vorzunehmen.

  • Wendet optional benutzerdefinierte JSON-Attribute auf chef-client-Durchläufe an.

  • Wendet optional benutzerdefinierte JSON-Attribute aus einer Quelldatei an, die an einem von Ihnen angegebenen Ort gespeichert ist.

Sie können Git, GitHub, HTTP oder Amazon-S3-Buckets als Download-Quellen für Chef Cookbooks und Rezepte verwenden, die Sie in einem AWS-ApplyChefRecipes-Dokument angeben.

Anmerkung

Zuordnungen, die Chef-Rezepte ausführen, werden in macOS nicht unterstützt.

Erste Schritte

Bevor Sie ein AWS-ApplyChefRecipes-Dokument erstellen, bereiten Sie Ihre Chef-Cookbooks und das Cookbook-Repository vor. Wenn Sie noch kein Chef Kochbuch haben, das Sie verwenden möchten, können Sie zunächst ein HelloWorld Testkochbuch verwenden, das für Sie vorbereitet AWS wurde. Das AWS-ApplyChefRecipes-Dokument verweist bereits standardmäßig auf dieses Cookbook. Ihre Cookbooks sollten ähnlich wie die folgende Verzeichnisstruktur eingerichtet werden. Im folgenden Beispiel sind jenkins und nginx Beispiele für Chef-Cookbooks, die im Chef Supermarket auf der Chef-Website verfügbar sind.

Kochbücher auf der Chef SupermarketWebsite AWS können zwar nicht offiziell unterstützt werden, aber viele von ihnen funktionieren mit dem Dokument. AWS-ApplyChefRecipes Im Folgenden finden Sie Beispiele für Kriterien, die Sie bestimmen müssen, wenn Sie ein Community-Cookbook testen:

  • Das Cookbook sollte die Linux-basierten Betriebssysteme der Systems Manager-verwalteten Knoten unterstützen, auf die Sie zielen.

  • Das Cookbook sollte für die Chef-Client-Version (Chef 11 bis Chef 18) gültig sein, die Sie verwenden.

  • Das Cookbook ist kompatibel mit Chef Infra Client und erfordert keinen Chef-Server.

Stellen Sie sicher, dass Sie die Chef.io-Website erreichen können, damit alle Cookbooks, die Sie in der Ausführungsliste angeben, installiert werden können, wenn das Systems-Manager-Dokument (SSM-Dokument) ausgeführt wird. Die Verwendung eines eingebetteten cookbooks-Ordners wird zwar unterstützt, ist aber nicht erforderlich. Sie können Cookbooks direkt unter der Root-Ebene speichern.

<Top-level directory, or the top level of the archive file (ZIP or tgz or tar.gz)> └── cookbooks (optional level) ├── jenkins │ ├── metadata.rb │ └── recipes └── nginx ├── metadata.rb └── recipes
Wichtig

Bevor Sie eine State Manager-Zuordnung erstellen, in der Chef-Rezepte ausgeführt werden, beachten Sie, dass die Dokumentausführung die Chef-Clientsoftware auf den Systems-Manager-verwalteten Knoten installiert, es sei denn, Sie setzen den Wert der Chef-Client-Version auf None. Diese Operation verwendet ein Installationsskript von Chef, um Chef-Komponenten in Ihrem Namen zu installieren. Bevor Sie ein AWS-ApplyChefRecipes-Dokument ausführen, stellen Sie sicher, dass Ihr Unternehmen alle geltenden gesetzlichen Anforderungen einhalten kann, einschließlich der Lizenzbedingungen, die für die Verwendung von Chef-Software gelten. Weitere Informationen finden Sie auf der Chef-Website.

Systems Manager kann Compliance-Berichte an einen S3-Bucket oder die Systems Manager-Konsole übermitteln oder Compliance-Ergebnisse als Antwort auf Systems Manager-API-Befehle zur Verfügung stellen. Zum Ausführen von Systems Manager-Compliance-Berichten muss das Instance-Profil, das an Systems Manager-verwaltete Knoten angefügt ist, über Berechtigungen zum Schreiben in den S3-Bucket verfügen. Das Instance-Profil muss über die Berechtigung zur Nutzung der Systems Manager PutComplianceItem-API verfügen. Weitere Informationen zur Systems Manager-Compliance finden Sie unter AWS Systems Manager-Compliance.

Protokollieren der Dokumentausführung

Wenn Sie ein Systems Manager Manager-Dokument (SSM-Dokument) mithilfe einer State Manager Zuordnung ausführen, können Sie die Zuordnung so konfigurieren, dass die Ausgabe des Dokumentenlaufs ausgewählt wird, und Sie können die Ausgabe an Amazon S3 oder Amazon CloudWatch Logs (CloudWatch Logs) senden. Um die Problembehebung zu vereinfachen, wenn die Ausführung einer Zuordnung abgeschlossen ist, stellen Sie sicher, dass die Zuordnung so konfiguriert ist, dass die Befehlsausgabe entweder in einen Amazon S3 S3-Bucket oder in CloudWatch Logs geschrieben wird. Weitere Informationen finden Sie unter Arbeiten mit Zuordnungen in Systems Manager.

Anwenden von JSON-Attributen auf Ziele bei der Ausführung eines Rezepts

Sie können JSON-Attribute angeben, die Ihr Chef-Client während einer Zuordnung auf die Zielknoten anwenden soll. Beim Einrichten der Zuordnung können Sie unformatiertes JSON oder den Pfad zu einer in Amazon S3 gespeicherten JSON-Datei angeben.

Verwenden Sie JSON-Attribute, wenn Sie beispielsweise die Art und Weise, wie das Rezept ausgeführt wird, anpassen möchten, ohne das Rezept selbst ändern zu müssen:

  • Überschreiben einer kleinen Anzahl von Attributen

    Verwenden Sie benutzerdefiniertes JSON, um zu vermeiden, dass Sie mehrere Versionen eines Rezepts verwalten müssen, um kleine Unterschiede zu berücksichtigen.

  • Bereitstellung variabler Werte

    Verwenden Sie benutzerdefiniertes JSON, um Werte anzugeben, die sich von ändern können run-to-run. Wenn Ihre Chef-Cookbooks beispielsweise eine Drittanbieter-Anwendung konfigurieren, die Zahlungen akzeptiert, können Sie möglicherweise benutzerdefiniertes JSON verwenden, um die URL des Zahlungsendpunkts anzugeben.

Angeben von Attributen in unformatiertem JSON

Im Folgenden finden Sie ein Beispiel für das Format, das Sie verwenden können, um benutzerdefinierte JSON-Attribute für Ihr Chef-Rezept anzugeben.

{"filepath":"/tmp/example.txt", "content":"Hello, World!"}
Angabe eines Pfads zu einer JSON-Datei

Im Folgenden finden Sie ein Beispiel für das Format, das Sie verwenden können, um den Pfad zu benutzerdefinierten JSON-Attributen für Ihr Chef-Rezept anzugeben.

{"sourceType":"s3", "sourceInfo":"someS3URL1"}, {"sourceType":"s3", "sourceInfo":"someS3URL2"}

Git als Quelle für Cookbooks verwenden

Das AWS-ApplyChefRecipes-Dokument verwendet das aws:downloadContent-Plugin, um Chef-Cookbooks herunterzuladen. Um Inhalte aus Git herunterzuladen, geben Sie Informationen über Ihr Git-Repository im JSON-Format an, wie im folgenden Beispiel. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

{ "repository":"GitCookbookRepository", "privateSSHKey":"{{ssm-secure:ssh-key-secure-string-parameter}}", "skipHostKeyChecking":"false", "getOptions":"branch:refs/head/main", "username":"{{ssm-secure:username-secure-string-parameter}}", "password":"{{ssm-secure:password-secure-string-parameter}}" }

Verwenden von GitHub als Quelle für Cookbooks

Das AWS-ApplyChefRecipes-Dokument verwendet das aws:downloadContent-Plugin, um Cookbooks herunterzuladen. Um Inhalte aus GitHub herunterzuladen, geben Sie Informationen über Ihr GitHub-Repository im JSON-Format an, wie im folgenden Beispiel. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

{ "owner":"TestUser", "repository":"GitHubCookbookRepository", "path":"cookbooks/HelloWorld", "getOptions":"branch:refs/head/main", "tokenInfo":"{{ssm-secure:token-secure-string-parameter}}" }

HTTP als Quelle für Cookbooks verwenden

Sie können Chef Cookbooks an einem benutzerdefinierten HTTP-Speicherort entweder als einzelne .zip oder tar.gz-Datei oder als Verzeichnisstruktur speichern. Um Inhalte über HTTP herunterzuladen, geben Sie den Pfad zu der Datei oder dem Verzeichnis im JSON-Format wie im folgenden Beispiel an. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

{ "url":"https://my.website.com/chef-cookbooks/HelloWorld.zip", "allowInsecureDownload":"false", "authMethod":"Basic", "username":"{{ssm-secure:username-secure-string-parameter}}", "password":"{{ssm-secure:password-secure-string-parameter}}" }

Verwenden von Amazon S3 als Quelle für Cookbooks

Sie können Chef-Cookbooks auch in Amazon S3 als einzelne .zip- oder tar.gz-Datei oder als Verzeichnisstruktur speichern und herunterladen. Um Inhalte von Amazon S3 herunterzuladen, geben Sie den Pfad zu der Datei im JSON-Format wie in den folgenden Beispielen an. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

Beispiel 1: Herunterladen eines bestimmten Cookbooks

{ "path":"https://s3.amazonaws.com/chef-cookbooks/HelloWorld.zip" }

Beispiel 2: Herunterladen des Inhalts eines Verzeichnisses

{ "path":"https://s3.amazonaws.com/chef-cookbooks-test/HelloWorld" }
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 Erforderliche Instance-Berechtigungen für Systems Manager konfigurieren.

Erstellen einer Zuordnung, die Chef-Rezepte ausführt (Konsole)

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

  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 ein, der Ihnen hilft, sich an den Zweck der Zuordnung zu erinnern.

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

  6. Wählen Sie unter Parameter für Quelltyp entweder Git, GitHub, HTTP, oder S3 aus.

  7. Geben Sie unter Quelleninfo die Informationen zur Cookbook-Quelle in dem Format ein, das dem in Schritt 6 ausgewählten Quellentyp entspricht. Weitere Informationen finden Sie unter den folgenden Themen:

  8. Listen Sie in der Run list (Ausführungsliste) die auszuführenden Rezepte im folgenden Format auf. Trennen Sie jedes Rezept durch ein Komma wie gezeigt. Geben Sie kein Leerzeichen nach dem Komma ein. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

    recipe[cookbook-name1::recipe-name],recipe[cookbook-name2::recipe-name]
  9. (Optional) Geben Sie benutzerdefinierte JSON-Attribute an, die der Chef-Client an Ihre Zielknoten weitergeben soll.

    1. Fügen Sie unter Inhalt von JSON-Attributen alle Attribute hinzu, die der Chef-Client an Ihre Zielknoten weitergeben soll.

    2. Fügen Sie in JSON-Attributquellen die Pfade zu allen Attributen hinzu, die der Chef-Client an Ihre Zielknoten weitergeben soll.

    Weitere Informationen finden Sie unter Anwenden von JSON-Attributen auf Ziele bei der Ausführung eines Rezepts.

  10. Geben Sie für die Chef-Client-Version eine Chef-Version an. Gültige Werte sind 11 bis 18 oder None. Wenn Sie eine Zahl zwischen 11 und 18 (einschließlich) angeben, installiert Systems Manager die richtige Chef-Client-Version auf Ihren Zielknoten. Wenn Sie None angeben, installiert Systems Manager den Chef-Client nicht auf Ziel-Knoten, bevor Sie die Rezepte des Dokuments ausführen.

  11. (Optional) Geben Sie für Chef-Client-Argumente zusätzliche Argumente an, die für die von Ihnen verwendete Version von Chef unterstützt werden. Um mehr über unterstützte Argumente zu erfahren, führen Sie chef-client -h auf einem Knoten aus, auf dem der Chef-Client ausgeführt wird.

  12. (Optional) Aktivieren Sie Why-run, um Änderungen anzuzeigen, die bei der Ausführung der Rezepte an Ziel-Knoten vorgenommen wurden, ohne dass die Ziel-Knoten tatsächlich geändert werden.

  13. Wählen Sie für Compliance severity (Schweregrad der Compliance) den Schweregrad der Systems Manager-Compliance-Ergebnisse aus, die gemeldet werden sollen. In den Compliance-Berichten finden Sie Informationen dazu, ob die Zuordnung konform ist, zusammen mit dem festgelegten Schweregrad. Compliance-Berichte werden in einem S3-Bucket gespeichert, den Sie als Wert des Parameters Compliance report bucket (Compliance-Berichts-Bucket) angeben (Schritt 14). Weitere Informationen zur Compliance finden Sie unter Erfahren Sie mehr über Compliance in dieser Anleitung.

    Compliance-Scans messen die Abweichung zwischen der Konfiguration, die in Ihren Chef-Rezepten und Knoten-Ressourcen angegeben ist. Gültige Werte sind Critical, High, Medium, Low, Informational, Unspecified oder None. Um die Compliance-Berichterstattung zu überspringen, wählen Sie None.

  14. Geben Sie unter Compliance type (Compliance-Typ) den Compliance-Typ an, für den die Ergebnisse gemeldet werden sollen. Gültige Werte sind Association für State Manager Assoziationen oder Custom:custom-type. Der Standardwert ist Custom:Chef.

  15. Geben Sie unter Compliance-Berichts-Bucket den Namen eines S3-Buckets ein, in dem Informationen zu jeder Chef-Ausführung dieses Dokuments gespeichert werden sollen, einschließlich der Ressourcenkonfiguration und der Ergebnisse der Compliance.

  16. Konfigurieren Sie in 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 unter Concurrency (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 unter Error threshold (Fehlerschwelle) 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.

  17. (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.

  18. Wählen Sie Zuordnung erstellen.

Erstellen einer Zuordnung, die Chef-Rezepte ausführt (CLI)

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

  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 Chef Cookbooks auf Zielknoten ausführt, die die angegebenen Tags haben. Verwenden Sie den Befehl, der für Ihren Quellentyp des Cookbooks und Ihr Betriebssystem geeignet ist. Ersetzen Sie jeden example-resource-placeholder durch Ihre Informationen.

    1. Git-Quelle

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["Git"],"SourceInfo":["{\"repository\":\"repository-name\", \"getOptions\": \"branch:branch-name\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"
    2. GitHub source

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"owner-name\", \"repository\": \"name\", \"path\": \"path-to-directory-or-cookbook-to-download\", \"getOptions\": \"branch:branch-name\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json}"], "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' ^ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"

      Ein Beispiel.

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:OS,Values=Linux \ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \ --association-name "MyChefAssociation" \ --schedule-expression "cron(0 2 ? * SUN *)"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:OS,Values=Linux ^ --parameters '{"SourceType":["GitHub"],"SourceInfo":["{\"owner\":\"ChefRecipeTest\", \"repository\": \"ChefCookbooks\", \"path\": \"cookbooks/HelloWorld\", \"getOptions\": \"branch:master\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^ --association-name "MyChefAssociation" ^ --schedule-expression "cron(0 2 ? * SUN *)"
    3. HTTP-Quelle

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" \ --schedule-expression "cron-or-rate-expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["HTTP"],"SourceInfo":["{\"url\":\"url-to-zip-file|directory|cookbook\", \"authMethod\": \"auth-method\", \"username\": \"{{ ssm-secure:username-secure-string-parameter }}\", \"password\": \"{{ ssm-secure:password-secure-string-parameter }}\"}"], "RunList":["{\"recipe[cookbook-name-1::recipe-name]\", \"recipe[cookbook-name-2::recipe-name]\"}"], "JsonAttributesContent": ["{custom-json-content}"], "JsonAttributesSources": "{\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-1\"}, {\"sourceType\":\"s3\", \"sourceInfo\":\"s3-bucket-endpoint-2\"}", "ChefClientVersion": ["version-number"], "ChefClientArguments":["{chef-client-arguments}"], "WhyRun": boolean, "ComplianceSeverity": ["severity-value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["s3-bucket-name"]}' \ --association-name "name" ^ --schedule-expression "cron-or-rate-expression"
    4. Amazon-S3-Quelle

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets Key=tag:TagKey,Values=TagValue \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' \ --association-name "name" \ --schedule-expression "cron_or_rate_expression"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets Key=tag:TagKey,Values=TagValue ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/path_to_Zip_file,_directory,_or_cookbook_to_download\"}"], "RunList":["{\"recipe[cookbook_name1::recipe_name]\", \"recipe[cookbook_name2::recipe_name]\"}"], "JsonAttributesContent": ["{Custom_JSON}"], "ChefClientVersion": ["version_number"], "ChefClientArguments":["{chef_client_arguments}"], "WhyRun": true_or_false, "ComplianceSeverity": ["severity_value"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["amzn-s3-demo-bucket"]}' ^ --association-name "name" ^ --schedule-expression "cron_or_rate_expression"

      Ein Beispiel.

      Linux & macOS
      aws ssm create-association --name "AWS-ApplyChefRecipes" \ --targets "Key=tag:OS,Values= Linux" \ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' \ --association-name "name" \ --schedule-expression "cron(0 2 ? * SUN *)"
      Windows
      aws ssm create-association --name "AWS-ApplyChefRecipes" ^ --targets "Key=tag:OS,Values= Linux" ^ --parameters '{"SourceType":["S3"],"SourceInfo":["{\"path\":\"https://s3.amazonaws.com/amzn-s3-demo-bucket/HelloWorld\"}"], "RunList":["{\"recipe[HelloWorld::HelloWorldRecipe]\", \"recipe[HelloWorld::InstallApp]\"}"], "JsonAttributesContent": ["{\"state\": \"visible\",\"colors\": {\"foreground\": \"light-blue\",\"background\": \"dark-gray\"}}"], "ChefClientVersion": ["14"], "ChefClientArguments":["{--fips}"], "WhyRun": false, "ComplianceSeverity": ["Medium"], "ComplianceType": ["Custom:Chef"], "ComplianceReportBucket": ["ChefComplianceResultsBucket"]}' ^ --association-name "name" ^ --schedule-expression "cron(0 2 ? * SUN *)"

      Das System erstellt die Zuordnung und führt die Zuordnung auf den Zielknoten aus, es sei denn, Ihr angegebener cron- oder rate-Ausdruck verhindert dies.

      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.

  3. Führen Sie den folgenden Befehl aus, um den Status der Zuordnung, die Sie gerade erstellt haben, anzuzeigen.

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

Anzeigen von Details zur Chef-Ressourcen-Compliance

Systems Manager erfasst Compliance-Informationen über von Chef verwaltete Ressourcen im Compliance-Berichts-Bucket-Wert von Amazon S3, den Sie bei der Ausführung des AWS-ApplyChefRecipes-Dokuments angegeben haben. Die Suche nach Informationen zu Chef-Ressourcenfehlern in einem S3-Bucket kann zeitaufwendig sein. Stattdessen können Sie diese Informationen auf der Systems Manager-Seite Compliance anzeigen.

Ein Systems-Manager-Compliance-Scan sammelt Informationen zu Ressourcen auf Ihren verwalteten Knoten, die in der letzten Chef-Ausführung erstellt oder überprüft wurden. Die Ressourcen können unter anderem Dateien, Verzeichnisse, systemd-Services, yum-Pakete, Vorlagendateien, gem-Pakete und abhängige Cookbooks umfassen.

Der Bereich Compliance-Ressourcen-Zusammenfassung zeigt die Anzahl der Ressourcen an, die fehlgeschlagen sind. Im folgenden Beispiel ComplianceTypelautet Custom: Chef und eine Ressource ist nicht konform.

Anmerkung

Custom:Chefist der ComplianceTypeStandardwert im AWS-ApplyChefRecipes Dokument. Dieser Wert ist anpassbar.

Anzeigen der Anzahl im Bereich Compliance-Ressourcen-Zusammenfassung der Seite Compliance.

Der Abschnitt „Detailübersicht für Ressourcen“ enthält Informationen über die AWS Ressource, die nicht richtlinientreu ist. Dieser Abschnitt enthält auch den Chef-Ressourcentyp, für den die Compliance ausgeführt wurde, den Schweregrad des Problems, den Compliance-Status und Links zu weiteren Informationen, falls vorhanden.

Anzeigen von Compliance-Details für einen von Chef verwalteten Ressourcenfehler

View output zeigt die letzten 4.000 Zeichen des detaillierten Status an. Systems Manager beginnt mit der Ausnahme als erstem Element, sucht nach ausführlichen Meldungen und zeigt diese an, bis das Kontingent von 4.000 Zeichen erreicht ist. Dieser Vorgang zeigt die Protokollmeldungen an, die vor dem Auslösen der Ausnahme ausgegeben wurden. Dabei handelt es sich um die relevantesten Nachrichten für die Fehlerbehebung.

Weitere Informationen zum Anzeigen von Compliance-Informationen finden Sie unter AWS Systems Manager-Compliance.

Wichtig

Wenn die State Manager-Zuordnung fehlschlägt, werden keine Compliance-Daten gemeldet. Beispiel: Wenn Systems Manager versucht, ein Chef-Cookbook aus einem S3-Bucket herunterzuladen, und der Knoten keine Berechtigung zum Zugriff besitzt, schlägt die Zuordnung fehl und Systems Manager meldet keine Compliance-Daten.