

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
<a name="best-practices-packaging-cookbooks-locally"></a>

**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](https://repost.aws/) oder über den [AWS Premium-Support](https://aws.amazon.com/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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) oder [Wie lösche ich einen S3 Bucket?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html).

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. 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](https://www.chef.io/downloads) (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
<a name="best-practices-packaging-cookbooks-locally-12"></a>

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
   ```

1. 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 [https://supermarket.chef.io/cookbooks/java](https://supermarket.chef.io/cookbooks/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'
   ```

1. 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'
   ```

1. 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
   ```

1. 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
   ```

1. [Ändern Sie in OpsWorks Stacks Ihren Stack](https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-enable.html) 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.

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

   1. 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
<a name="best-practices-packaging-cookbooks-locally-one"></a>

****

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.

1.  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
   ```

1.  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
   ```

1.  [Ändern Sie in OpsWorks Stacks Ihren Stack](https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-installingcustom-enable.html) so, dass das Paket, das Sie hochgeladen haben, als Kochbuchquelle verwendet wird. 

## Lokales Verpacken von Abhängigkeiten für mehrere Rezeptbücher
<a name="best-practices-packaging-cookbooks-locally-multiple"></a>

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.

1.  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"
   ```

1.  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
   ```

1.  Erstellen Sie abschließend ein Zip-Paket, laden Sie es auf Amazon S3 hoch und ändern Sie Ihren 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](#best-practices-packaging-cookbooks-locally-one) ausführen. 

## Weitere Ressourcen
<a name="w2ab1c14c49c17c17"></a>

Weitere Informationen zum Verpacken von Rezeptbuchabhängigkeiten finden Sie im Folgenden.
+ [So verpacken Sie Cookbook-Abhängigkeiten lokal mit Berkshelf](https://aws.amazon.com/blogs/devops/how-to-package-cookbook-dependencies-locally-with-berkshelf/) im AWS-Blog DevOps 
+ [Linux Chef 12 mit Berkshelf](https://forums.aws.amazon.com/thread.jspa?threadID=221131) in den Foren OpsWorks 
+ [Berkshelf in Chef 12 in den Foren](https://forums.aws.amazon.com/message.jspa?messageID=694464) OpsWorks 
+ [Installieren von benutzerdefinierten Rezeptbüchern](workingcookbook-installingcustom-enable.md) in diesem Handbuch
+ [Rezeptbuch-Repositorys](workingcookbook-installingcustom-repo.md) in diesem Handbuch