Rezepte - 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.

Rezepte

Wichtig

AWS OpsWorks Stacks akzeptiert keine neuen Kunden mehr. Bestehende Kunden können die OpsWorks Konsole, API, CLI und CloudFormation Ressourcen bis zum 26. Mai 2024 normal nutzen. Zu diesem Zeitpunkt werden sie eingestellt. Um sich auf diesen Übergang vorzubereiten, empfehlen wir Ihnen, Ihre Stacks AWS Systems Manager so schnell wie möglich auf umzustellen. Weitere Informationen finden Sie unter AWS OpsWorks StacksHäufig gestellte Fragen zum Lebensende und Migrieren Sie Ihre AWS OpsWorks Stacks Anwendungen zu AWS Systems Manager Application Manager.

Rezepte sind Ruby-Anwendungen zur Konfiguration des Systems. Sie installieren Pakete, erstellen Konfigurationsdateien aus Vorlagen, führen Shell-Befehle aus, erstellen Dateien und Verzeichnisse usw. AWS OpsWorks Stacks führt Rezepte normalerweise automatisch aus, wenn ein Lebenszyklusereignis auf der Instance auftritt. Sie können Rezepte jedoch jederzeit manuell mit dem Stack-Befehl "execute recipes" ausführen. Weitere Informationen finden Sie unter About Recipes.

Ein Rezept besteht in der Regel hauptsächlich aus einer Reihe von Ressourcen, die jeweils für einen gewünschten Zustand eines Aspekts des Systems stehen. Jede Ressource enthält eine Reihe von Attributen, über die der gewünschte Zustand definiert und festgelegt wird, welche Aktionen dafür notwendig sind. Chef ordnet die Ressourcen einem geeigneten Anbieter zu, der die Aktion ausführt. Weitere Informationen finden Sie unter Resources and Providers Reference.

Mit package-Ressourcen können Sie Softwarepakete auf Linux-Instances verwalten. Im folgenden Beispiel wird das Apache-Paket installiert.

... package 'apache2' do case node[:platform] when 'centos','redhat','fedora','amazon' package_name 'httpd' when 'debian','ubuntu' package_name 'apache2' end action :install end ...

Chef verwendet den korrekten Paketanbieter für die jeweilige Plattform. Ressourcenattributen wird oft nur ein Wert zugewiesen, Sie können Werte aber mithilfe logischer Ruby-Operatoren auch anhand bestimmter Bedingungen zuweisen. Im Beispiel wird der Operator case verwenden, der anhand von node[:platform] das Betriebssystem der Instance bestimmt und dem Attribut package_name den korrekten Wert zuweist. Sie können Attribute mithilfe der Standard-Chef-Knotensyntax in ein Rezept einfügen und Chef ersetzt diese durch die zugehörigen Werte. Sie können beliebige Attribute im Knotenobjekt verwenden und sind nicht auf die Attribute Ihres Rezeptbuchs beschränkt.

Nachdem der korrekte Paketname ermittelt wurde, endet das Codesegment mit einer install-Aktion, um das Paket zu installieren. Andere mögliche Aktionen dieser Ressource sind upgrade und remove. Weitere Informationen finden Sie unter package.

Oft kann es hilfreich sein, komplexe Installations- und Konfigurationsaufgaben aufzuteilen und die Unteraufgaben als eigene Rezepte zu implementieren. Mithilfe eines Hauptrezepts können Sie dann die einzelnen Unterrezepte zum richtigen Zeitpunkt ausführen. Das folgende Beispiel enthält die Codezeile nach dem vorherigen Beispiel:

include_recipe 'apache2::service'

Damit ein Rezept ein untergeordnetes Rezept ausführen kann, verwenden Sie das Schlüsselwort include_recipe gefolgt vom Rezeptnamen. Rezepte werden anhand der Standard-Chef-CookbookName::RecipeName-Syntax identifiziert, wobei bei RecipeName die Endung .rb weggelassen wird.

Anmerkung

Mit einer include_recipe-Anweisung führen Sie das Rezept an einer bestimmten Stelle im Hauptrezept aus. Tatsächlich ersetzt Chef jedoch jede include_recipe-Anweisung durch den Code des jeweiligen Rezepts, bevor das Hauptrezept ausgeführt wird.

Eine directory-Ressource steht für ein Verzeichnis, beispielsweise das Installationsverzeichnis für Paketdateien. Mit der folgenden default.rb-Ressource wird ein Linux-Protokollverzeichnis erstellt.

directory node[:apache][:log_dir] do mode 0755 action :create end

Das Protokollverzeichnis ist in einer Attributdatei des Rezeptbuchs definiert. Die Ressource legt den Verzeichnismodus auf 0755 fest und erstellt es mit der Aktion create. Weitere Informationen finden Sie unter directory. Diese Ressource kann auch auf Windows-Instances angewendet werden.

Die Ressource execute stellt Befehle wie Shell-Befehle oder Skripte dar. Im folgenden Beispiel werden module.load-Dateien erstellt.

execute 'generate-module-list' do if node[:kernel][:machine] == 'x86_64' libdir = 'lib64' else libdir = 'lib' end command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available" action :run end

Die Ressource bestimmt zunächst den CPU-Typ. [:kernel][:machine] ist ein weiteres automatisches Attribut, das von Chef für verschiedene Systemeigenschaften, in diesem Fall den CPU-Typ, erstellt wird. Danach wird der Befehl, ein Perl-Skript, festgelegt, das mit der Aktion run ausgeführt wird, um die module.load-Dateien zu erstellen. Weitere Informationen finden Sie unter execute.

Eine template Ressource stellt eine Datei dar – in der Regel eine Konfigurationsdatei – die aus einer der Vorlagendateien des Cookbooks generiert werden soll. Im nachfolgenden Beispiel wird die Konfigurationsdatei httpd.conf aus der Vorlage apache2.conf.erb erstellt, die wir bereits in Vorlagen erläutert haben.

template 'apache2.conf' do case node[:platform] when 'centos','redhat','fedora','amazon' path "#{node[:apache][:dir]}/conf/httpd.conf" when 'debian','ubuntu' path "#{node[:apache][:dir]}/apache2.conf" end source 'apache2.conf.erb' owner 'root' group 'root' mode 0644 notifies :restart, resources(:service => 'apache2') end

Über die Ressource wird der Name der generierten Datei sowie der Speicherort abhängig vom Betriebssystem der Instance festgelegt. Dann wird festgelegt, dass apache2.conf.erb als Vorlage zum Erstellen der Datei verwendet wird. Außerdem werden Eigentümer, Gruppe und Modus der Datei festgelegt. Dann wird notify ausgeführt, um die Ressource service, die für den Apache-Server steht, anzuweisen, den Server neu zu starten. Weitere Informationen finden Sie unter template.