

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.

# Chef-Versionen
<a name="workingcookbook-chef11"></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).

OpsWorks Stacks unterstützt mehrere Versionen von Chef. Sie wählen die Version aus, wenn Sie [den Stack erstellen](workingstacks-creating.md). OpsWorks Stacks installiert dann diese Version von Chef auf allen Instanzen des Stacks zusammen mit einer Reihe von integrierten Rezepten, die mit dieser Version kompatibel sind. Wenn Sie benutzerdefinierte Rezepte installieren, müssen diese mit der Chef-Version des Stacks kompatibel sein.

OpsWorks Stacks unterstützt derzeit die Chef-Versionen 12, 11.10, 11.4 und 0.9 für Linux-Stacks und Chef 12.2 (derzeit Chef 12.22) für Windows-Stacks. Der Einfachheit halber wird auf sie nur mit den Haupt- und Nebenversionsnummern verwiesen. Für Linux-Stacks können Sie mit dem Configuration Manager angeben, welche Chef-Version verwendet werden soll, wenn Sie [einen Stack erstellen](workingstacks-creating.md). Windows Stacks müssen Chef 12.2 verwenden. Weitere Informationen, einschließlich Richtlinien zum Migrieren von Stacks auf aktuelle Chef-Versionen, finden Sie unter [Chef-Versionen](#workingcookbook-chef11). Vollständige Versionsinformationen finden Sie unter [OpsWorks Stacks-Betriebssysteme](workinginstances-os.md).

**Chef 12.2**  
Die Unterstützung von Chef 12.2 wurde im Mai 2015 eingeführt und wird nur von Windows-Stacks verwendet. Die aktuelle Version von Chef auf Windows-Stacks ist Chef 12.22. Der Support läuft mit Ruby 2.3.6 und verwendet den [Chef-Client im lokalen Modus](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode). Dieser startet einen lokalen In-Memory-Chef-Server mit dem Namen [chef-zero](https://docs.chef.io/ctl_chef_client.html#about-chef-zero). Dieser Server ermöglicht Rezepten die Nutzung der Chef-Suchfunktion und Data Bags. Der Support hat einige Einschränkungen, die in [Rezepte implementieren: Chef 12.2](workingcookbook-chef12.md) beschrieben sind. Sie können jedoch viele Community-Rezeptbücher ohne Änderung ausführen.

**Chef 12**  
Der Chef 12-Support wurde im Dezember 2015 eingeführt und wird nur für Linux-Stacks verwendet. Er läuft mit Ruby 2.1.6 oder 2.2.3 und verwendet den [Chef-Client im lokalen Modus](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode). Rezepte können so die Chef-Suchfunktion und Data Bags verwenden. Weitere Informationen finden Sie unter [OpsWorks Stacks-Betriebssysteme](workinginstances-os.md).

**Chef 11.10**  
Der Chef 11.10-Support wurde im März 2014 eingeführt und wird nur für Linux-Stacks verwendet. Er läuft mit Ruby 2.0.0 und verwendet den [Chef-Client im lokalen Modus](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode). Rezepte können so die Chef-Suchfunktion und Data Bags verwenden. Der Support hat einige Einschränkungen, die in [Implementieren von Rezepten: Chef 11.10](workingcookbook-chef11-10.md) beschrieben sind. Sie können jedoch viele Community-Rezeptbücher ohne Änderung ausführen. Sie können auch [Berkshelf](http://berkshelf.com/) verwenden, um Ihre Rezeptbuchabhängigkeiten zu verwalten. Die unterstützten Berkshelf-Versionen hängen vom Betriebssystem ab. Weitere Informationen finden Sie unter [OpsWorks Stacks-Betriebssysteme](workinginstances-os.md). Sie können keine CentOS-Stacks erstellen, die Chef 11.10 verwenden.

**Chef 11.4**  
Der Chef 11.4-Support wurde im Juli 2013 eingeführt und wird nur für Linux-Stacks verwendet. Er läuft mit Ruby 1.8.7 und verwendet [chef-solo](https://docs.chef.io/chef_solo.html). Hiermit werden die Chef-Suchfunktion oder Data Bags nicht unterstützt. Mit OpsWorks Stacks können Sie häufig Community-Kochbücher verwenden, die von diesen Funktionen abhängen, aber Sie müssen sie wie unter beschrieben ändern. [Migrieren auf eine neue Chef-Version](workingcookbook-chef11-migrate.md) Sie können keine CentOS-Stacks erstellen, die Chef 11.4 verwenden. Chef 11.4-Stacks werden auf regionalen Endpunkten außerhalb der Region USA Ost (Nord-Virginia) nicht unterstützt.

**Chef 0.9**  
 Chef 0.9 wird nur für Linux-Stacks verwendet und nicht mehr unterstützt. Beachten Sie die folgenden Informationen:   
+ Mit der Konsole können Sie keinen neuen Chef 0.9-Stack erstellen.

  Sie müssen die Befehlszeilen-Schnittstelle (CLI) bzw. eine API verwenden oder einen Stack mit einer anderen Chef-Version erstellen und anschließend die Stack-Konfiguration bearbeiten.
+ Neue OpsWorks Stacks-Funktionen sind für Chef 0.9-Stacks nicht verfügbar.
+ Neue Betriebssystemversionen bieten nur begrenzten Support für Chef 0.9-Stacks.

  Insbesondere Amazon Linux 2014.09 und spätere Versionen unterstützen Chef 0.9-Stacks mit Rails App Server-Layern, die von Ruby 1.8.7 abhängen, nicht.
+ Neue AWS-Regionen, einschließlich Europa (Frankfurt), unterstützen Chef 0.9-Stacks nicht.
Wir empfehlen, Chef 0.9 nicht für neue Stacks zu verwenden. Sie sollten bestehende Stacks so bald wie möglich auf die neueste Chef-Version migrieren.

Wenn Sie Community-Kochbücher mit OpsWorks Stacks verwenden möchten, empfehlen wir [Ihnen, Chef 12 für neue Linux-Stacks anzugeben](workingstacks-creating.md) und Ihre vorhandenen Linux-Stacks auf Chef 12 zu migrieren. Sie können die OpsWorks Stacks-Konsole, API oder CLI verwenden, um Ihre vorhandenen Stacks auf eine neuere Chef-Version zu migrieren. Weitere Informationen finden Sie unter [Migrieren auf eine neue Chef-Version](workingcookbook-chef11-migrate.md).

**Topics**
+ [Implementierung von Rezepten für Chef 12.2 Stacks](workingcookbook-chef12.md)
+ [Implementieren von Rezepten für Chef 12-Stacks](workingcookbook-chef12-linux.md)
+ [Implementieren von Rezepten für Chef 11.10-Stacks](workingcookbook-chef11-10.md)
+ [Implementieren von Rezepten für Chef 11.4-Stacks](workingcookbook-chef11-4.md)
+ [Migrieren eines vorhandenen Linux-Stacks auf eine neue Chef-Version](workingcookbook-chef11-migrate.md)

# Implementierung von Rezepten für Chef 12.2 Stacks
<a name="workingcookbook-chef12"></a>

**Wichtig**  
Der AWS OpsWorks Stacks Dienst 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).

Chef 12.2 (derzeit Chef 12.22) steht nur auf Windows-Stacks zur Verfügung, die diese Chef-Version ausführen müssen.
+ Rezepte müssen Windows-spezifische Attribute und Ressourcen für einige Zwecke verwenden.

  Weitere Informationen finden Sie unter [Chef für Microsoft Windows](https://docs.chef.io/windows.html).
+ Da Chef-Läufe Ruby 2.3.6 verwenden, können Ihre Rezepte die neue Ruby-Syntax nutzen.
+ Rezepte können die Chef-Suchfunktion und Data Bags verwenden.

  Chef 12.2 Stacks können viele Community-Kochbücher ohne Änderung verwenden. Weitere Informationen erhalten Sie unter [Verwenden der Chef-Suchfunktion](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search) und [Verwenden von Data Bags](workingcookbook-chef11-10.md#workingcookbook-chef11-10-databag).
+ Die meisten der in [OpsWorks Referenz für Stacks Data Bag](data-bags.md) und [Integrierte Rezeptbuchattribute](attributes-recipes.md) beschriebenen Stack-Konfigurations- und Bereitstellungsattribute sind für Windows-Rezepte verfügbar.

  Sie können diese Attributwerte mit der Chef-Suchfunktion abrufen. Ein Beispiel finden Sie unter [Abrufen von Attributwerten mit der Chef-Suche](cookbooks-101-opsworks-opsworks-stack-config-search.md). Eine Liste von Attributen finden Sie unter [OpsWorks Referenz für Stacks Data Bag](data-bags.md).

# Implementieren von Rezepten für Chef 12-Stacks
<a name="workingcookbook-chef12-linux"></a>

**Wichtig**  
Der AWS OpsWorks Stacks Dienst 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).

Chef 12-Stacks bieten die folgenden Vorteile gegenüber Chef 11.10-Stacks:
+ Da Chef-Läufe Ruby 2.1.6 verwenden, können Ihre Rezepte die neue Ruby-Syntax nutzen.
+ Chef 12-Stacks können noch mehr Community-Rezeptbücher ohne Änderung verwenden. Ohne integrierte Rezeptbücher kann es nicht mehr zu Namenskonflikten zwischen integrierten und benutzerdefinierten Rezeptbüchern kommen. 
+ Sie sind nicht mehr auf die Berkshelf-Versionen beschränkt, für die OpsWorks Stacks vorgefertigte Pakete bereitgestellt hat. Berkshelf ist in Chef 12 nicht mehr auf OpsWorks Stacks-Instanzen installiert. Stattdessen können Sie eine beliebige Berkshelf-Version auf Ihrer lokalen Workstation verwenden. 
+ Es gibt jetzt eine klare Trennung zwischen den integrierten Kochbüchern, die OpsWorks Stacks mit Chef 12 (Elastic Load Balancing, Amazon RDS und Amazon ECS) bereitstellt, und benutzerdefinierten Kochbüchern. Dadurch ist die Fehlerbehebung bei fehlgeschlagenen Chef-Läufen einfacher.

# Implementieren von Rezepten für Chef 11.10-Stacks
<a name="workingcookbook-chef11-10"></a>

**Wichtig**  
Der AWS OpsWorks Stacks Dienst 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).

Chef 11.10-Stacks bieten die folgenden Vorteile gegenüber Chef 11.4-Stacks:
+ Da Chef-Läufe Ruby 2.0.0 verwenden, können Ihre Rezepte die neue Ruby-Syntax nutzen.
+ Rezepte können die Chef-Suchfunktion und Data Bags verwenden.

  Chef 11.10-Stacks können viele Community-Rezeptbücher ohne Änderung nutzen.
+ Sie können Berkshelf zum Verwalten von Rezeptbüchern verwenden.

  Berkshelf bietet eine flexiblere Möglichkeit zum Verwalten Ihrer benutzerdefinierten Rezeptbücher und zum Verwenden von Community-Rezeptbüchern in einem Stack.
+ Rezeptbücher müssen Abhängigkeiten in `metadata.rb` deklarieren.

  Wenn Ihr Rezeptbuch von einem anderen Rezeptbuch abhängt, müssen Sie diese Abhängigkeit in die Datei `metadata.rb` Ihres Rezeptbuchs aufnehmen. Wenn Ihr Rezeptbuch beispielsweise ein Rezept mit einem Statement wie `include_recipe anothercookbook::somerecipe` enthält, muss Ihre Rezeptbuch-Datei `metadata.rb` die folgende Zeile enthalten: `depends "anothercookbook"`.
+ OpsWorks Stacks installiert einen MySQL-Client nur dann auf den Instanzen eines Stacks, wenn der Stack eine MySQL-Schicht enthält.
+ OpsWorks Stacks installiert einen Ganglia-Client nur dann auf den Instanzen eines Stacks, wenn der Stack eine Ganglia-Schicht enthält.
+ Wenn eine Bereitstellung `bundle install` ausführt und bei der Installation ein Fehler auftritt, kann die Bereitstellung auch nicht verarbeitet werden.

**Wichtig**  
Verwenden Sie keine Namen der integrierten Rezeptbücher für benutzerdefinierte oder Community-Rezeptbücher. Bei benutzerdefinierten Rezeptbüchern mit demselben Namen wie integrierte Rezeptbücher kann ein Fehler auftreten. [Eine vollständige Liste der integrierten Kochbücher, die mit den Stacks Chef 11.10, 11.4 und 0.9 verfügbar sind, finden Sie im Opsworks-Cookbooks-Repository unter. GitHub](https://github.com/aws/opsworks-cookbooks)  
Bei Rezeptbüchern mit Nicht-ASCII-Zeichen, die in Chef 0.9- und 11.4-Stacks erfolgreich ausgeführt werden, kann auf einem Chef 11.10-Stack ein Fehler auftreten. Der Grund ist, dass Chef 11.10-Stacks Ruby 2.0.0 für Chef-Ausführungen verwenden, bei dem die Kodierungsrichtlinien viel strenger sind als bei Ruby 1.8.7. Um sicherzustellen, dass diese Rezeptbücher auf Chef 11.10-Stacks erfolgreich ausgeführt werden, sollte jede Datei mit Nicht-ASCII-Zeichen oben mit einem Kommentar, der einen Hinweis zur Kodierung enthält, versehen sein. Für die UTF-8-Kodierung würde der Kommentar z. B. `# encoding: UTF-8` lauten. Weitere Informationen zur Ruby 2.0.0-Kodierung finden Sie unter [Kodierung](http://www.ruby-doc.org/core-2.0.0/Encoding.html).

**Topics**
+ [Installation und Vorrang von Rezeptbüchern](#workingcookbook-chef11-10-override)
+ [Verwenden der Chef-Suchfunktion](#workingcookbook-chef11-10-search)
+ [Verwenden von Data Bags](#workingcookbook-chef11-10-databag)
+ [Verwenden von Berkshelf](#workingcookbook-chef11-10-berkshelf)

## Installation und Vorrang von Rezeptbüchern
<a name="workingcookbook-chef11-10-override"></a>

Das Verfahren zur Installation von OpsWorks Stacks-Kochbüchern funktioniert für Chef 11.10-Stacks etwas anders als für frühere Chef-Versionen. Bei Chef 11.10-Stacks werden die integrierten, benutzerdefinierten und Berkshelf-Kochbücher nach der Installation von OpsWorks Stacks in der folgenden Reihenfolge zu einem gemeinsamen Verzeichnis zusammengeführt:

1. Integrierte Rezeptbücher.

1. Berkshelf-Rezeptbücher, sofern vorhanden.

1. Benutzerdefinierte Rezeptbücher, sofern vorhanden. 

Wenn OpsWorks Stacks diese Zusammenführung durchführt, kopiert es den gesamten Inhalt der Verzeichnisse, einschließlich der Rezepte. Wenn Duplikate vorhanden sind, gelten die folgenden Regeln:
+ Der Inhalt der Berkshelf-Rezeptbücher hat Vorrang vor den integrierten Rezeptbüchern.
+ Der Inhalt der benutzerdefinierten Rezeptbücher hat Vorrang vor den Berkshelf-Rezeptbüchern.

Um zu veranschaulichen, wie dieser Vorgang funktioniert, sehen Sie sich das folgende Szenario an, in dem alle drei Rezeptbuchverzeichnisse ein Rezeptbuch mit dem Namen `mycookbook` enthalten:
+ Integrierte Kochbücher — `mycookbook` enthält eine Attributdatei mit dem Namen`someattributes.rb`, eine Vorlagendatei mit dem Namen `sometemplate.erb` und ein Rezept mit dem Namen. `somerecipe.rb`
+ Berkshelf-Kochbücher — beinhaltet und. `mycookbook` `sometemplate.erb` `somerecipe.rb`
+ Benutzerdefinierte Kochbücher — beinhaltet. `mycookbook` `somerecipe.rb`

Das zusammengeführte Rezeptbuch enthält Folgendes:
+ `someattributes.rb` aus dem integrierten Rezeptbuch.
+ `sometemplate.erb` aus dem Berkshelf-Rezeptbuch.
+ `somerecipe.rb` aus dem benutzerdefinierten Rezeptbuch.

**Wichtig**  
Sie sollten Ihren Chef 11.10-Stack nicht anpassen, indem Sie ein komplettes integriertes Rezeptbuch in Ihr Repository kopieren und dann Teile des Rezeptbuchs ändern. Dabei wird das gesamte integrierte Rezeptbuch, einschließlich der Rezepte, überschrieben. Wenn OpsWorks Stacks dieses Kochbuch aktualisiert, kann dein Stack nicht von diesen Updates profitieren, es sei denn, du aktualisierst deine private Kopie manuell. Weitere Informationen zum Anpassen von Stacks finden Sie unter [Stacks anpassen OpsWorks](customizing.md).

## Verwenden der Chef-Suchfunktion
<a name="workingcookbook-chef11-10-search"></a>

Sie können die Chef-[`search`-Methode](http://docs.chef.io/dsl_recipe.html#search) in Ihren Rezepten verwenden, um Stack-Daten abzufragen. Sie verwenden dieselbe Syntax wie für den Chef-Server, aber OpsWorks Stacks bezieht die Daten vom lokalen Knotenobjekt, anstatt einen Chef-Server abzufragen. Diese Daten umfassen Folgendes:
+ Die [Stack-Konfigurations- und Bereitstellungsattribute](workingstacks-json.md) der Instance.
+ Die Attribute aus den Attributdateien der integrierten und benutzerdefinierten Rezeptbücher der Instance.
+ Von Ohai gesammelte Systemdaten.

Die Stack-Konfiguration und die Bereitstellungsattribute enthalten die meisten Informationen, die Rezepte normalerweise durch Suchen abrufen, einschließlich Daten wie Hostnamen und IP-Adressen für jede Online-Instanz im Stack. OpsWorks Stacks aktualisiert diese Attribute für jedes [Lebenszyklusereignis](workingcookbook-events.md), wodurch sichergestellt wird, dass sie den aktuellen Stack-Status genau wiedergeben. Das bedeutet, dass Sie suchabhängige Community-Rezepte in Ihrem Stack häufig ohne Änderung verwenden können. Die Suchmethode gibt weiterhin die entsprechenden Daten zurück. Sie stammen nur aus den Stack-Konfigurations- und Bereitstellungsattributen statt von einem Server.

Die Haupteinschränkung der OpsWorks Stacks-Suche besteht darin, dass nur die Daten im lokalen Knotenobjekt verarbeitet werden, insbesondere die Stack-Konfiguration und die Bereitstellungsattribute. Aus diesem Grund sind die folgenden Arten von Daten über die Suche möglicherweise nicht verfügbar:
+ Lokal definierte Attribute auf anderen Instances.

  Wenn ein Rezept ein Attribut lokal definiert, werden diese Informationen nicht an den OpsWorks Stacks-Dienst zurückgemeldet, sodass Sie mit der Suche nicht von anderen Instanzen aus auf diese Daten zugreifen können.
+ Benutzerdefinierte `deploy`-Attribute.

  Sie können das benutzerdefinierte JSON-Objekt bei der [Bereitstellung einer App](workingapps-deploying.md) angeben. Die entsprechenden Attribute werden auf den Instances des Stacks für diese Bereitstellung installiert. Wenn Sie die Bereitstellung jedoch nur für ausgewählte Instances vornehmen, werden die Attribute nur auf diesen Instances installiert. Abfragen für diese benutzerdefinierten JSON-Attribute schlagen auf allen anderen Instances fehl. Darüber hinaus sind die benutzerdefinierten Attribute in der Stack-Konfigurations- und Bereitstellungs-JSON nur für die jeweilige Bereitstellung enthalten. Auf die Attribute kann erst zugegriffen werden, wenn das nächste Lebenszyklusereignis eine neue Reihe von Stack-Konfigurations- und Bereitstellungsattributen installiert. Hinweis: Wenn Sie ein [benutzerdefiniertes JSON-Objekt für den Stack angeben](workingstacks-json.md), werden die Attribute auf allen Instances für jedes Lebenszyklusereignis installiert und können immer über die Suche gefunden werden.
+ Ohai-Daten von anderen Instances.

  Das Chef-[Ohai-Tool](http://docs.chef.io/resource_ohai.html) ruft eine Vielzahl von Daten auf einer Instance ab und fügt sie dem Knotenobjekt hinzu. Diese Daten werden lokal gespeichert und nicht dem OpsWorks Stacks-Service gemeldet, sodass die Suchfunktion nicht auf Ohai-Daten von anderen Instances zugreifen kann. Einige dieser Daten können jedoch in die Stack-Konfigurations- und Bereitstellungsattribute aufgenommen werden.
+ Offline-Instances.

  Die Stack-Konfigurations- und Bereitstellungsattribute enthalten nur Daten für Online-Instances.

Der folgende Rezeptauszug zeigt, wie die private IP-Adresse einer PHP-Layer-Instance mit der Suchfunktion abgerufen wird. 

```
appserver = search(:node, "role:php-app").first
Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
```

**Anmerkung**  
Wenn OpsWorks Stacks dem Node-Objekt die Stack-Konfiguration und die Bereitstellungsattribute hinzufügt, werden tatsächlich zwei Sätze von Layer-Attributen mit jeweils denselben Daten erstellt. Ein Satz befindet sich im `layers` Namespace, in dem OpsWorks Stacks die Daten speichert. Die andere Gruppe wird im `role`-Namespace abgelegt, d. h. so speichert der Chef Server die entsprechenden Daten. Der Zweck des `role` Namespace besteht darin, dass Suchcode, der für den Chef-Server implementiert wurde, auf einer OpsWorks Stacks-Instanz ausgeführt werden kann. Wenn Sie Code speziell für OpsWorks Stacks schreiben, könnten Sie entweder `layers:php-app` oder `role:php-app` im vorherigen Beispiel verwenden und `search` würden dasselbe Ergebnis zurückgeben.

## Verwenden von Data Bags
<a name="workingcookbook-chef11-10-databag"></a>

Sie können die Chef-[`data_bag_item`-Methode](http://docs.chef.io/dsl_recipe.html#data-bag-item) in Ihren Rezepten für die Abfrage von Informationen in einem Data Bag verwenden. Sie verwenden die gleiche Syntax wie für einen Chef-Server. OpsWorks Stacks erhält die Daten allerdings aus den Stack-Konfigurations- und Bereitstellungsattributen der Instance. OpsWorks Stacks unterstützt derzeit jedoch keine Chef-Umgebungen und kehrt daher `node.chef_environment` immer zurück. `_default`

Sie erstellen ein Data Bag mit einer benutzerdefinierten JSON, um dem `[:opsworks][:data_bags]`-Attribut ein oder mehrere Attribute hinzuzufügen. Das folgende Beispiel zeigt das allgemeine Format zum Erstellen eines Data Bags in einer benutzerdefinierten JSON.

**Anmerkung**  
Sie können kein Data Bag erstellen, indem Sie es Ihrem Rezeptbuch-Repository hinzufügen. Sie müssen ein benutzerdefiniertes JSON-Objekt verwenden.

```
{
  "opsworks": {
    "data_bags": {
      "bag_name1": {
        "item_name1: {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      "bag_name2": {
        "item_name1": {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      ...
    }
  }
}
```

Sie [geben das benutzerdefinierte JSON-Objekt normalerweise für den Stack an](workingstacks-json.md), der die benutzerdefinierten Attribute auf jede Instance für jedes folgende Lebenszyklusereignis installiert. Sie können ein benutzerdefiniertes JSON-Objekt auch beim Bereitstellen einer Anwendung angeben. Diese Attribute werden jedoch nur für diese Bereitstellung installiert und zwar möglicherweise nur für eine bestimmte Gruppe von Instances. Weitere Informationen finden Sie unter [Bereitstellen von Anwendungen](workingapps-deploying.md).

Das folgende Beispiel zeigt, wie ein benutzerdefiniertes JSON-Objekt ein Data Bag mit dem Namen `myapp` erstellt. Die JSON verfügt über ein Element, `mysql`, mit zwei Schlüssel-Wert-Paaren.

```
{ "opsworks": {
    "data_bags": {
      "myapp": {
        "mysql": { 
          "username": "default-user",
          "password": "default-pass"
        }
      }
    }
  }
}
```

Um die Daten in Ihrem Rezept zu verwenden, können Sie `data_bag_item` aufrufen und das Data Bag und die Wertenamen übergeben, wie im folgenden Auszug dargestellt.

```
mything = data_bag_item("myapp", "mysql")
Chef::Log.info("The username is '#{mything['username']}' ")
```

Zum Ändern der Daten im Data Bag modifizieren Sie nur das benutzerdefinierte JSON-Objekt. Die Installation erfolgt dann auf den Instances des Stacks für das nächste Lebenszyklusereignis. 

## Verwenden von Berkshelf
<a name="workingcookbook-chef11-10-berkshelf"></a>

Mit Chef 0.9- und Chef 11.4-Stacks können Sie nur ein benutzerdefiniertes Rezeptbuch-Repository installieren. Mit Chef 11.10-Stacks können Sie [Berkshelf](http://berkshelf.com/) für die Verwaltung Ihrer Rezeptbücher und deren Abhängigkeiten verwenden. So können Sie Rezeptbücher aus mehreren Repositorys installieren. (Weitere Informationen finden Sie unter [Lokales Verpacken von Rezeptbuch-Abhängigkeiten](best-practices-packaging-cookbooks-locally.md).) Insbesondere können Sie mit Berkshelf OpsWorks Stacks-kompatible Community-Kochbücher direkt aus ihren Repositorys installieren, anstatt sie in Ihr benutzerdefiniertes Kochbuch-Repository kopieren zu müssen. Die unterstützten Berkshelf-Versionen hängen vom Betriebssystem ab. Weitere Informationen finden Sie unter [OpsWorks Stacks-Betriebssysteme](workinginstances-os.md).

Zum Verwenden von Berkshelf müssen Sie eine Aktivierung vornehmen, wie in [Installieren von benutzerdefinierten Rezeptbüchern](workingcookbook-installingcustom-enable.md) beschrieben. Nehmen Sie dann eine `Berksfile`-Datei in das Stammverzeichnis Ihres Rezeptbuch-Repositorys auf, das die zu installierenden Rezeptbücher festlegt. 

Um eine externe Rezeptbuchquelle in einer Berksfile-Datei festzulegen, geben Sie ein Quellattribut oben in der Datei an, das die Standard-Repository-URL festlegt. Berkshelf sucht in der Quelle nach den Kochbüchern, sofern Sie nicht explizit ein Repository angeben. URLs Fügen Sie dann eine Zeile für die einzelnen Rezeptbücher hinzu, die Sie installieren möchten. Verwenden Sie dazu folgendes Format: 

```
cookbook 'cookbook_name', ['>= cookbook_version'], [cookbook_options]
```

Die Felder nach `cookbook` geben das jeweilige Rezeptbuch an.
+ *cookbook\$1name*— (Erforderlich) Gibt den Namen des Kochbuches an.

  Wenn Sie keine anderen Felder angeben, installiert Berkshelf das Kochbuch aus der angegebenen Quelle. URLs
+ *cookbook\$1version*— (Optional) Gibt die Version oder die Versionen des Kochbuchs an.

  Sie können ein Präfix festlegen, wie z. B. `=` oder `>=`, um eine bestimmte Version oder eine Reihe gültiger Versionen anzugeben. Wenn Sie keine Version angeben, installiert Berkshelf die aktuelle Version.
+ *cookbook\$1options*— (Optional) Das letzte Feld ist ein Hash, der ein oder mehrere Schlüssel-Wert-Paare enthält, die Optionen wie den Speicherort des Repositorys angeben.

  Sie können beispielsweise einen `git`-Schlüssel angeben, um auf ein bestimmtes Git-Repository zu verweisen, und einen `tag`-Schlüssel für eine bestimmte Repository-Branch festlegen. Die Angabe der Repository-Branch ist in der Regel der beste Weg, um sicherzustellen, dass Sie Ihr bevorzugtes Rezeptbuch installieren.

**Wichtig**  
Deklarieren Sie keine Rezeptbücher, indem Sie eine `metadata`-Zeile in Ihrer Berksfile-Datei einfügen und die Rezeptbuchabhängigkeiten in der Datei `metadata.rb` deklarieren. Damit dies einwandfrei funktioniert, müssen beide Dateien im selben Verzeichnis gespeichert sein. Bei OpsWorks Stacks muss sich das Berksfile im Stammverzeichnis des Repositorys befinden, aber die `metadata.rb` Dateien müssen sich in ihren jeweiligen Kochbuchverzeichnissen befinden. Deklarieren Sie stattdessen externe Rezeptbücher explizit in der Berksfile-Datei.

Es folgt ein Beispiel für eine Berksfile-Datei, das die verschiedenen Möglichkeiten zum Angeben von Rezeptbüchern veranschaulicht. Weitere Informationen zum Erstellen einer Berksfile-Datei finden Sie unter [Berkshelf](http://berkshelf.com/).

```
source "https://supermarket.chef.io"

cookbook 'apt'
cookbook 'bluepill', '>= 2.3.1'
cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git'
cookbook 'build-essential', '>= 1.4.2', git: 'git://github.com/opscode-cookbooks/build-essential.git', tag: 'v1.4.2'
```

Mit dieser Datei werden die folgenden Rezeptbücher installiert:
+ Die aktuelle Version von `apt` aus dem Repository der Community-Rezeptbücher.
+ Die aktuelle Version von `bluepill` der Community-Rezeptbücher, sofern es sich um Version 2.3.1 oder höher handelt.
+ Die aktuelle Version von `ark` aus einem angegebenen Repository.

  Die URL für dieses Beispiel ist für ein öffentliches Community-Kochbuch-Repository aktiviert GitHub, aber Sie können Kochbücher aus anderen Repositorys installieren, auch aus privaten Repositorys. Weitere Informationen finden Sie unter [Berkshelf](http://berkshelf.com/).
+ Das `build-essential`-Rezeptbuch aus der v1.4.2-Branch des angegebenen Repositorys.

Ein benutzerdefiniertes Rezeptbuch-Repository kann zusätzlich zu einer Berksfile-Datei benutzerdefinierte Rezeptbücher enthalten. In diesem Fall installiert OpsWorks Stacks beide Gruppen von Kochbüchern, was bedeutet, dass eine Instanz über bis zu drei Kochbuch-Repositorys verfügen kann. 
+ Die integrierten Rezeptbücher werden im Verzeichnis `/opt/aws/opsworks/current/cookbooks` installiert.
+ Wenn Ihr benutzerdefiniertes Rezeptbuch-Repository Rezeptbücher enthält, werden sie in das Verzeichnis `/opt/aws/opsworks/current/site-cookbooks` installiert.
+ Wenn Sie Berkshelf aktiviert haben und Ihr benutzerdefiniertes Rezeptbuch-Repository eine Berksfile-Datei enthält, werden die angegebenen Rezeptbücher im Verzeichnis `/opt/aws/opsworks/current/berkshelf-cookbooks` installiert.

[**Die integrierten Kochbücher und Ihre benutzerdefinierten Kochbücher werden während der Einrichtung auf jeder Instanz installiert und anschließend nicht aktualisiert, es sei denn, Sie führen den Stack-Befehl „Benutzerdefinierte Kochbücher aktualisieren“ manuell aus.**](workingstacks-commands.md) OpsWorks Stacks läuft `berks install` bei jedem Koch-Lauf, sodass Ihre Berkshelf-Kochbücher für jedes [Lebenszyklusereignis](workingcookbook-events.md) gemäß den folgenden Regeln aktualisiert werden: 
+ Bei einer neuen Version im Repository wird mit diesem Vorgang das Rezeptbuch aus dem Repository aktualisiert.
+ Andernfalls aktualisiert dieser Vorgang die Berkshelf-Rezeptbücher aus einem lokalen Cache.

**Anmerkung**  
Mit dem Vorgang werden die Berkshelf-Rezeptbücher überschrieben. Wenn Sie die lokalen Kopien der Rezeptbücher geändert haben, werden die Änderungen hiermit überschrieben. Weitere Informationen finden Sie unter [Berkshelf](http://berkshelf.com/).

Sie können Ihre Berkshelf-Rezeptbücher auch aktualisieren, indem Sie den Stack-Befehl **Benutzerdefinierte Rezeptbücher aktualisieren** ausführen. Mit diesem Befehl werden sowohl die Berkshelf-Rezeptbücher als auch Ihre benutzerdefinierten Rezeptbücher aktualisiert.

# Implementieren von Rezepten für Chef 11.4-Stacks
<a name="workingcookbook-chef11-4"></a>

**Wichtig**  
Der AWS OpsWorks Stacks Dienst 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).

**Wichtig**  
Verwenden Sie keine Namen der integrierten Rezeptbücher für benutzerdefinierte oder Community-Rezeptbücher. Bei benutzerdefinierten Rezeptbüchern mit demselben Namen wie integrierte Rezeptbücher kann ein Fehler auftreten. [Eine vollständige Liste der integrierten Kochbücher, die mit den Chef-Stacks 11.10, 11.4 und 0.9 verfügbar sind, finden Sie im opsworks-cookbooks-Repository unter. GitHub](https://github.com/aws/opsworks-cookbooks)

Die primäre Einschränkung von Chef 11.4-Stacks besteht darin, dass Rezepte weder die Chef-Suchfunktion noch Data Bags verwenden können. OpsWorks Stacks installiert jedoch [Stackkonfigurations- und Bereitstellungsattribute](workingcookbook-json.md) auf jeder Instanz, die viele der Informationen enthalten, die Sie mit der Suche erhalten würden, einschließlich der folgenden:
+ Benutzerdefinierte Daten von der Konsole, wie z. B. Host- oder App-Namen.
+ Vom OpsWorks Stacks-Dienst generierte Stack-Konfigurationsdaten, wie z. B. die Ebenen, Apps und Instanzen des Stacks, sowie Details zu jeder Instanz, wie z. B. die IP-Adresse.
+ Benutzerdefinierte JSON-Attribute, die vom Benutzer bereitgestellte Daten enthalten und nahezu denselben Zweck erfüllen können wie Data Bags.

OpsWorks Stacks installiert für jedes Lebenszyklusereignis eine aktuelle Version der Stack-Konfiguration und der Bereitstellungsattribute auf jeder Instanz, bevor der Chef-Lauf des Events gestartet wird. Die Daten werden den Rezepten mit der Standardsyntax `node[:attribute][:child_attribute][...]` zur Verfügung gestellt. Die Stack-Konfigurations- und Bereitstellungsattribute enthalten z. B. den Stack-Namen `node[:opsworks][:stack][:name]`.

Der folgende Auszug aus einem der integrierten Rezepte erhält den Stack-Namen und verwendet ihn zum Erstellen einer Konfigurationsdatei.

```
template '/etc/ganglia/gmetad.conf' do
  source 'gmetad.conf.erb'
  mode '0644'
  variables :stack_name => node[:opsworks][:stack][:name]
  notifies :restart, "service[gmetad]"
end
```

Viele der Stack-Konfigurations- und Bereitstellungsattributwerte enthalten mehrere Attribute. Sie müssen diese Attribute schrittweise durchlaufen, um die benötigten Informationen zu erhalten. Das folgende Beispiel zeigt einen Auszug aus den Stack-Konfigurations- und Bereitstellungsattributen, die der Einfachheit halber als JSON-Objekt dargestellt werden. Es enthält ein Top-Level-Attribut, `deploy`, mit einem Attribut für jede App des Stacks, die mit dem Kurznamen der App bezeichnet wird.

```
{
  ...
  "deploy": {
    "app1_shortname": {
      "document_root": "app1_root",
      "deploy_to": "deploy_directory",
      "application_type": "php",
      ...
    },
    "app2_shortname": {
      "document_root": "app2_root",
      ...
    }
  },
  ...
}
```

Jedes App-Attribut enthält eine Gruppe von Attributen, die die Merkmale der Anwendung angeben. Das `deploy_to`-Attribut stellt z. B. das Bereitstellungsverzeichnis der App dar. Mit dem folgenden Auszug werden Benutzer, Gruppe und Pfad für das Bereitstellungsverzeichnis der einzelnen Apps festgelegt.

```
node[:deploy].each do |application, deploy|
  opsworks_deploy_dir do
    user deploy[:user]
    group deploy[:group]
    path deploy[:deploy_to]
  end
  ...
end
```

Weitere Informationen zu den Stack-Konfigurations- und Bereitstellungsattributen finden Sie unter [Stacks anpassen OpsWorks](customizing.md). Weitere Informationen zu den Bereitstellungsverzeichnissen finden Sie unter [Bereitstellungsrezepte](create-custom-deploy.md).

Chef 11.4-Stacks unterstützen keine Data Bags. Sie können den Stack-Konfigurations- und Bereitstellungsattributen jedoch beliebige Daten hinzufügen, indem Sie eine [benutzerdefinierte JSON](workingstacks-json.md) angeben. Ihre Rezepte können dann mit der standardmäßigen Chef-Knotensyntax auf die Daten zugreifen. Weitere Informationen finden Sie unter [Nutzen eines benutzerdefinierten JSON-Objekts](workingcookbook-json-override.md).

Wenn Sie die Funktionalität einer verschlüsselten Datentasche benötigen, besteht eine Möglichkeit darin, vertrauliche Attribute an einem sicheren Ort wie einem privaten Amazon S3 S3-Bucket zu speichern. Ihre Rezepte können dann das [AWS Ruby SDK](https://aws.amazon.com/documentation/sdkforruby/) verwenden, das auf allen OpsWorks Stacks-Instances installiert ist, um die Daten aus dem Bucket herunterzuladen. 

**Anmerkung**  
Jede OpsWorks Stacks-Instance hat ein Instance-Profil. Die zugehörige [IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html) gibt an, auf welche AWS-Ressourcen von Anwendungen zugegriffen werden kann, die auf der Instance ausgeführt werden. Damit Ihre Rezepte auf einen Amazon S3 S3-Bucket zugreifen können, muss die Richtlinie der Rolle eine Aussage ähnlich der folgenden enthalten, die die Berechtigung zum Abrufen von Dateien aus einem bestimmten Bucket erteilt.   

```
"Action": ["s3:GetObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
```
Weitere Informationen zu Instance-Profilen finden Sie unter [Angeben von Berechtigungen für Apps, die auf Instanzen ausgeführt werden EC2](opsworks-security-appsrole.md).

# Migrieren eines vorhandenen Linux-Stacks auf eine neue Chef-Version
<a name="workingcookbook-chef11-migrate"></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 die OpsWorks Stacks-Konsole, die API oder die CLI verwenden, um Ihre Linux-Stacks auf eine neuere Chef-Version zu migrieren. Für Ihre Rezepte ist jedoch möglicherweise eine Änderung erforderlich, damit sie mit der neueren Version kompatibel sind. Beachten Sie im Vorfeld der Migration eines Stacks die folgenden Hinweise.
+ Sie können die OpsWorks Stacks-Stack-Versionen nicht von Chef 11 auf Chef 12 ändern, indem Sie den Stack bearbeiten oder klonen. Ein Upgrade der Chef-Hauptversion kann mit dem in diesem Abschnitt beschriebenen Verfahren nicht durchgeführt werden. Weitere Informationen zur Umstellung von Chef 11.10 auf Chef 12 finden Sie unter [Implementieren von Rezepten: Chef 12](workingcookbook-chef12-linux.md).
+ Die Umstellung von einer Chef-Version auf eine andere beinhaltet eine Reihe von Änderungen, die zum Teil grundlegend sind.

  Weitere Informationen zur Umstellung von Chef 0.9 auf Chef 11.4 finden Sie unter [Migrieren auf eine neue Chef-Version](#workingcookbook-chef11-migrate). Weitere Informationen zur Umstellung von Chef 11.4 auf Chef 11.10 finden Sie unter [Implementieren von Rezepten: Chef 11.10](workingcookbook-chef11-10.md). Weitere Informationen zur Umstellung von Chef 11.10 auf Chef 12 finden Sie unter [Implementieren von Rezepten: Chef 12](workingcookbook-chef12-linux.md).
+ Chef-Läufe verwenden eine andere Ruby-Version auf Chef 0.9- und Chef 11.4-Stacks (Ruby 1.8.7), Chef 11.10-Stacks (Ruby 2.0.0) und Chef 12-Stacks (Ruby-2.1.6).

  Weitere Informationen finden Sie unter [Ruby-Versionen](workingcookbook-ruby.md).
+ Chef 11.10-Stacks nehmen die Rezeptbuchinstallation von Chef 0.9- oder Chef 11.4-Stacks unterschiedlich vor.

  Dieser Unterschied kann zu Problemen führen, wenn Sie Stacks mit benutzerdefinierten Rezeptbüchern auf Chef 11.10 migrieren. Weitere Informationen finden Sie unter [Installation und Vorrang von Rezeptbüchern](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override).

 Die folgenden Richtlinien werden für das Migrieren eines Chef-Stacks auf eine neuere Chef-Version empfohlen:

**Migrieren eines Stacks auf eine neuere Chef-Version**

1. [Klonen Sie Ihren Produktions-Stack](workingstacks-cloning.md). Klicken Sie auf der Seite **Clone Stack** auf **Advanced >>**, um den Abschnitt **Configuration Management** anzuzeigen, und ändern Sie **Chef version** auf die nächste höhere Version.
**Anmerkung**  
Wenn Sie mit einem Chef 0.9-Stack beginnen, können Sie kein Upgrade direkt auf Chef 11.10 durchführen. Sie müssen zunächst ein Upgrade auf Chef 11.4 vornehmen. Wenn Sie Ihren Stack auf Chef 11.10 migrieren möchten, bevor Sie Ihre Rezepte testen, warten Sie 20 Minuten, bis die Aktualisierung ausgeführt wird, und führen Sie dann ein Upgrade des Stacks von 11.4 auf 11.10 durch.

1. Fügen Sie den Layern Instances hinzu und testen Sie die geklonten Stack-Anwendungen und Rezeptbücher auf einem Test- oder Staging-System. Weitere Informationen finden Sie unter [All about Chef ...](https://docs.chef.io/index.html).

1. Wenn die Testergebnisse zufriedenstellend sind, führen Sie einen der folgenden Schritte aus:
   + Wenn dies die gewünschte Chef-Version ist, können Sie den geklonten Stack als Produktions-Stack verwenden oder die Chef-Version auf Ihrem Produktions-Stack zurücksetzen. 
   + Wenn Sie einen Chef 0.9-Stack auf Chef 11.10 in zwei Phasen migrieren, wiederholen Sie den Prozess, um den Stack von Chef 11.4 auf Chef 11.10 zu migrieren.

**Anmerkung**  
Wenn Sie Rezepte testen, können Sie [über SSH eine Verbindung mit](workinginstances-ssh.md) der Instance herstellen und dann den [Instance-Agenten-CLI](agent.md)-Befehl [run\$1command](agent-run.md) zum Ausführen der mit den verschiedenen Lebenszyklusereignissen verbundenen Rezepte ausführen. Die Agenten-CLI ist besonders nützlich zum Testen von Einrichtungsrezepten, da Sie sie sogar verwenden können, wenn die Einrichtung fehlschlägt und die Instance nicht online ist. Sie können auch den [Setup-Stack-Befehl](workingstacks-commands.md) verwenden, um Einrichtungsrezepte neu zu starten. Dieser Befehl ist jedoch nur verfügbar, wenn die Einrichtung erfolgreich war und die Instance online ist. 

Es ist möglich, einen laufenden Stack auf eine neue Chef-Version zu aktualisieren.

**Aktualisieren eines laufenden Stacks auf eine neue Chef-Version**

1. [Bearbeiten Sie den Stack](workingstacks-edit.md), um die Stack-Einstellung **Chef version** zu ändern.

1. Speichern Sie die neuen Einstellungen und warten Sie, bis OpsWorks Stacks die Instanzen aktualisiert hat. Dies dauert normalerweise 15 bis 20 Minuten.

**Wichtig**  
OpsWorks Stacks synchronisiert das Chef-Versionsupdate nicht mit Lebenszyklusereignissen. Wenn Sie die Chef-Version auf einem Produktions-Stack aktualisieren möchten, müssen Sie sicherstellen, dass die Aktualisierung abgeschlossen ist, bevor das nächste [Lebenszyklusereignis](workingcookbook-events.md) eintritt. Wenn ein Ereignis eintritt — in der Regel ein Deploy- oder Configure-Ereignis — aktualisiert der Instance-Agent Ihre benutzerdefinierten Kochbücher und führt die dem Ereignis zugewiesenen Rezepte aus, unabhängig davon, ob das Versionsupdate abgeschlossen ist oder nicht. Es gibt keine direkte Methode, um zu bestimmen, ob die Versionsaktualisierung abgeschlossen wurde. In den Bereitstellungsprotokollen ist jedoch die Chef-Version enthalten.