Lokales Verpacken von Rezeptbuch-Abhängigkeiten - 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.

Lokales Verpacken von Rezeptbuch-Abhängigkeiten

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.

Sie können Berkshelf verwenden, um Ihre Kochbuchabhängigkeiten lokal zu verpacken, das Paket auf Amazon S3 hochzuladen und Ihren Stack so zu ändern, dass das Paket auf Amazon S3 als Kochbuchquelle verwendet wird. Inhalte, die an Amazon-S3-Buckets geliefert werden, können Kundeninhalte enthalten. Weitere Informationen zum Entfernen sensibler Daten finden Sie unter Wie entleere ich einen S3 Bucket? oder Wie lösche ich einen S3 Bucket?.

In den folgenden Anleitungen wird beschrieben, wie Sie Ihre Kochbücher und ihre Abhängigkeiten in einer .zip-Datei vorverpacken und dann die .zip-Datei als Kochbuchquelle für Linux-Instances in Stacks verwenden. AWS OpsWorks In der ersten Anleitung wird das Verpacken eines Rezeptbuchs beschrieben. In der zweiten Anleitung wird das Verpacken mehrerer Rezeptbücher beschrieben.

Bevor Sie beginnen, installieren Sie das Chef Development Kit (auch als Chef DK bezeichnet). Dabei handelt es sich um eine Reihe von Funktionen, die von der Chef-Community erstellt wurden. Sie benötigen es, um das chef-Befehlszeilen-Tool verwenden zu können.

Lokales Verpacken von Abhängigkeiten in Chef 12

In Chef 12 Linux ist Berkshelf nicht mehr standardmäßig auf Stack-Instances installiert. Wir empfehlen die Installation und Verwendung von Berkshelf auf einem lokalen Entwicklungscomputer, um Ihre Rezeptbuch-Abhängigkeiten lokal zu verpacken. Laden Sie Ihr Paket einschließlich der Abhängigkeiten auf Amazon S3 hoch. Als letzten Schritt ändern Sie Ihren Chef 12 Linux-Stack so ab, dass das hochgeladene Paket als Rezeptbuchquelle verwendet wird. Beachten Sie die folgenden Unterschiede, wenn Sie Rezeptbücher in Chef 12 verpacken.

  1. Erstellen Sie auf dem lokalen Computer ein Rezeptbuch, indem Sie das Befehlszeilen-Tool chef ausführen.

    chef generate cookbook "server-app"

    Mit diesem Befehl wird ein Rezeptbuch, ein Berksfile, eine Datei metadata.rb und ein Rezeptverzeichnis erstellt und in einem Ordner gespeichert, der den gleichen Namen wie das Rezeptbuch hat. Das folgende Beispiel zeigt die Struktur dessen, was erstellt wird.

    server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
  2. Bearbeiten Sie in einem Texteditor das Berksfile so, dass es auf Rezeptbücher zeigt, von denen das Rezeptbuch server-app abhängt. In unserem Beispiel möchten wir, dass server-app von dem Rezeptbuch java vom Chef Supermarket abhängt. Wir geben die Version 1.50.0 oder eine neuere Nebenversion an, Sie können aber jede veröffentlichte Version in einfachen Anführungszeichen eingeben. Speichern Sie Ihre Änderungen und schließen Sie die Datei.

    source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
  3. Bearbeiten Sie die Datei metadata.rb, um die Abhängigkeit hinzuzufügen. Speichern Sie Ihre Änderungen und schließen Sie die Datei.

    depends 'java' , '~> 1.50.0'
  4. Wechseln Sie zu dem Rezeptbuchverzeichnis server-app, das Chef für Sie erstellt hat, und führen Sie dann den Befehl package aus, um eine tar-Datei des Rezeptbuchs zu erstellen. Wenn Sie mehrere Rezeptbücher verpacken, sollten Sie diesen Befehl in dem Stammverzeichnis ausführen, in dem alle Rezeptbücher gespeichert werden. Um ein einzelnes Rezeptbuch zu verpacken, führen Sie diesen Befehl auf der Verzeichnisebene des Rezeptbuchs aus. In diesem Beispiel führen wir diesen Befehl im Verzeichnis server-app aus.

    berks package cookbooks.tar.gz

    Die Ausgabe sieht in etwa folgendermaßen aus. Die tar.gz-Datei wird in Ihrem lokalen Verzeichnis erstellt.

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  5. Laden Sie im das Paket AWS CLI, das Sie gerade erstellt haben, auf Amazon S3 hoch. Notieren Sie den neuen URL des Rezeptbuchpakets, nachdem Sie es auf S3 hochgeladen haben. Sie benötigen diesen URL für Ihre Stack-Einstellungen.

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    Die Ausgabe sieht in etwa folgendermaßen aus.

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  6. Ändern Sie in AWS OpsWorks Stacks Ihren Stack so, dass das Paket, das Sie hochgeladen haben, als Kochbuchquelle verwendet wird.

    1. Legen Sie die Einstellung Use custom Chef Cookbooks (Benutzerdefinierte Chef-Rezeptbücher verwenden) auf Yes (Ja) fest.

    2. Legen Sie Repository type (Repository-Typ) auf S3 Archive (S3-Archiv) fest.

    3. Fügen Sie in Repository URL (Repository-URL) die URL des Rezeptbuchpakets ein, das Sie in Schritt 5 hochgeladen haben.

    Speichern Sie die Änderungen an Ihrem Stack.

Lokales Verpacken von Abhängigkeiten für ein Rezeptbuch

  1. Erstellen Sie auf dem lokalen Computer mithilfe des Chef-Befehlszeilen-Tools ein Rezeptbuch:

    chef generate cookbook "server-app"

    Mit diesem Befehl wird ein Rezeptbuch und eine Berksfile erstellt und in einem Verzeichnis mit dem gleichen Namen wie das Rezeptbuch gespeichert.

  2. Wechseln Sie zu dem von Chef erstellten Rezeptbuch-Verzeichnis und verpacken Sie alles, indem Sie folgenden Befehl ausführen:

    berks package cookbooks.tar.gz

    Das Ergebnis sieht folgendermaßen aus:

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  3. Laden Sie im das Paket AWS CLI, das Sie gerade erstellt haben, auf Amazon S3 hoch:

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    Das Ergebnis sieht folgendermaßen aus:

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  4. Ändern Sie in AWS OpsWorks Stacks Ihren Stack so, dass das Paket, das Sie hochgeladen haben, als Kochbuchquelle verwendet wird.

Lokales Verpacken von Abhängigkeiten für mehrere Rezeptbücher

In diesem Beispiel werden zwei Rezeptbücher erstellt und deren Abhängigkeiten verpackt.

  1. Führen Sie auf dem lokalen Computer die folgenden chef-Befehle aus, um zwei Rezeptbücher zu erstellen:

    chef generate cookbook "server-app" chef generate cookbook "server-utils"

    In diesem Beispiel führt das Rezeptbuch der Serveranwendung Java-Konfigurationen aus, sodass eine Java-Abhängigkeit hinzuzufügen ist.

  2. Bearbeiten Sie server-app/metadata.rb, um eine Abhängigkeit im Community-Java-Rezeptbuch hinzuzufügen:

    maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
  3. Weisen Sie Berkshelf das Verpacken an, indem Sie die Berksfile-Datei im Rezeptbuch-Stammverzeichnis folgendermaßen ändern:

    source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"

    Ihre Datei-Struktur sieht jetzt folgendermaßen aus:

    .. └── Berksfile ├── server-app └── server-utils
  4. Erstellen Sie abschließend ein Zip-Paket, laden Sie es auf Amazon S3 hoch und ändern Sie Ihren AWS OpsWorks Stacks-Stack so, dass er die neue Kochbuchquelle verwendet. Hierfür müssen Sie die Schritte 2 bis 4 in Lokales Verpacken von Abhängigkeiten für ein Rezeptbuch ausführen.

Weitere Ressourcen

Weitere Informationen zum Verpacken von Rezeptbuchabhängigkeiten finden Sie im Folgenden.