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.
Verwenden von externen Rezeptbüchern auf einer Linux-Instance: Berkshelf
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
Anmerkung
Berkshelf ist nur für Chef 11.10-Linux-Stacks verfügbar.
Bevor Sie mit der Implementierung eines Rezeptbuchs beginnen, sollten Sie sich die Seite Chef Community Cookbooks
Um externe Rezeptbücher auf Instances verwenden zu können, müssen Sie es zunächst installieren und seine Abhängigkeiten verwalten können. Am einfachsten verwenden Sie dafür den Abhängigkeitsmanager Berkshelf. Berkshelf funktioniert auf EC2 Amazon-Instances, einschließlich OpsWorks Stacks-Instances, ist aber auch für die Zusammenarbeit mit Test Kitchen und Vagrant konzipiert. Die Verwendung auf Vagrant ist jedoch etwas anders als bei OpsWorks Stacks, sodass dieses Thema Beispiele für beide Plattformen enthält. Weitere Informationen zur Verwendung von Berkshelf finden Sie unter Berkshelf
Verwenden von Berkshelf mit Test Kitchen und Vagrant
In diesem Beispiel wird erläutert, wie Sie mit Berkshelf das Community-Rezeptbuch "getting-started" installieren und das darin enthaltene Rezept ausführen, um eine kurze Textdatei im Home-Verzeichnis der Instance zu installieren.
So installieren Sie Berkshelf und initialisieren ein Rezeptbuch
-
Installieren Sie das Berkshelf-Gem wie folgt auf Ihrem Computer.
gem install berkshelfAbhängig von Ihrer Workstation benötigen Sie hierfür womöglich
sudooder einen Ruby-Umgebungsmanager wie RVM. Führen Sie berks --versionaus, um zu überprüfen, ob Berkshelf korrekt installiert wurde. -
Das Rezeptbuch für dieses Thema heißt "external_cookbook". Sie können mit Berkshelf ein initialisiertes Rezeptbuch erstellen, statt wie in den vorherigen Themen manuell vorzugehen. Wechseln Sie hierfür ins Verzeichnis
opsworks_cookbooksund führen Sie den folgenden Befehl aus.berks cookbook external_cookbookDer Befehl erstellt das Verzeichnis
external_cookbooksowie einige Standardunterverzeichnisse von Chef und Test Kitchen, darunterrecipesundtest. Außerdem erstellt er Standardversionen einiger Standarddateien, darunter folgende:-
metadata.rb -
Konfigurationsdateien für Vagrant, Test Kitchen und Berkshelf
-
Ein leeres Rezept
default.rbim Verzeichnisrecipes
Anmerkung
Sie müssen
kitchen initnicht ausführen, da der Befehlberks cookbookdiese Aufgaben bereits ausführt. -
-
Führen Sie
kitchen converge. Das neu erstellte Rezeptbuch hat bisher noch keine relevante Funktion, kommt der Sache aber schon nahe.
Anmerkung
Sie können mithilfe von berks init auch ein vorhandenes Rezeptbuch initialisieren, um Berkshelf zu verwenden.
Um mithilfe von Berkshelf die externen Abhängigkeiten eines Rezeptbuchs zu verwalten, muss das Stammverzeichnis des Rezeptbuchs eine Datei Berksfile enthalten. Dies ist eine Konfigurationsdatei, in der festgelegt ist, wie Berkshelf Abhängigkeiten verwaltet. Wenn Sie mithilfe von berks cookbook das Rezeptbuch external_cookbook erstellen, wird eine Datei Berksfile mit folgendem Inhalt angelegt.
source "https://supermarket.chef.io" metadata
Diese Datei hat folgende Deklarationen:
-
source— Die URL einer Kochbuchquelle.Eine Berksfile-Datei kann beliebig viele
source-Deklarationen enthalten, von denen jede eine Standardquelle für abhängige Rezeptbücher angibt. Wenn Sie nicht explizit eine Rezeptbuchquelle angeben, durchsucht Berkshelf die Standard-Repositorys nach einem Rezeptbuch mit demselben Namen. Die Standard-Berksfile-Datei enthält ein einzelnes Attributsource, das auf das Community-Rezeptbuch-Repository verweist. Dieses Repository enthält das Rezeptbuch "getting-started", Sie können diese Zeile also unverändert lassen. -
metadata— Weist Berkshelf an, Kochbuch-Abhängigkeiten aufzunehmen, die in der Kochbuchdatei deklariert sind.metadata.rbMithilfe des Attributs
cookbookkönnen Sie auch selbst ein abhängiges Rezeptbuch in der Berksfile-Datei angeben. Weitere Informationen dazu erhalten Sie im weiteren Verlauf dieses Themas.
Es gibt zwei Möglichkeiten, die Abhängigkeiten eines Rezeptbuchs zu deklarieren:
-
Fügen Sie eine
cookbook-Deklaration in die Berksfile-Datei ein.Dies ist der Ansatz, der von Stacks verwendet wird. OpsWorks Fügen Sie beispielsweise
cookbook "getting-started"in die Berksfile-Datei ein, um das für dieses Beispiel benötigte Rezeptbuch "getting-started" festzulegen. Berkshelf durchsucht daraufhin die Standard-Repositorys nach einem Rezeptbuch mit diesem Namen. Sie können mithilfe voncookbookauch eine genaue Rezeptbuchquelle und sogar eine bestimmte Version festlegen. Weitere Informationen finden Sie unter Berkshelf. -
Fügen Sie eine
metadata-Deklaration in die Berksfile-Datei ein und deklarieren Sie die Abhängigkeit inmetadata.rb.Über diese Deklaration weisen Sie Berkshelf an, die Abhängigkeiten des Rezeptbuchs aus der Datei
metadata.rbebenfalls zu installieren. Um beispielsweise eine der Abhängigkeiten des Rezeptbuchs "getting-started" zu deklarieren, fügen Sie einedepends 'getting-started'-Deklaration in die Dateimetadata.rbdes Rezeptbuchs ein.
In diesem Beispiel wird aus Gründen der Konsistenz mit OpsWorks Stacks der erste Ansatz verwendet.
So installieren Sie das Rezeptbuch "getting-started"
-
Bearbeiten Sie die Standard-Berksfile-Datei und ersetzen Sie die
metadata-Deklaration durch einecookbook-Deklaration fürgetting-started. Der Inhalt sollte wie folgt aussehen.source "https://supermarket.chef.io" cookbook 'getting-started' -
Führen Sie
berks installaus, um das Rezeptbuch "getting-started" aus dem Community-Rezeptbuch-Repository in Ihrem lokalen Berkshelf-Verzeichnis, normalerweise~/.berkshelf, zu installieren. Dieses Verzeichnis wird oftmals einfach als das Berkshelf bezeichnet. Im Verzeichniscookbooksvon Berkshelf sollten Sie nun das Verzeichnis für das Rezeptbuch "" mit dem Namengetting-started-0.4.0getting-started- ( (oder ähnlich) finden. -
Ersetzen Sie
external_cookbook::defaultin der Ausführungsliste.kitchen.ymldurchgetting-started::default. In diesem Beispiel werden keine Rezepte aus "external_cookbook" ausgeführt. Es wird nur benötigt, um das Rezeptbuch "getting-started" zu verwenden. Die Datei.kitchen.ymlsollte jetzt wie folgt aussehen.--- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[getting-started::default] attributes: -
Führen Sie
kitchen convergeaus und melden Sie sich mitkitchen loginbei der Instance an. Das Anmeldeverzeichnis sollte eine Dateichef-getting-started.txtmit etwa folgendem Inhalt enthalten:Welcome to Chef! This is Chef version 11.12.8. Running on ubuntu. Version 12.04.Test Kitchen installiert Rezeptbücher im Verzeichnis
/tmp/kitchen/cookbooksder Instance. Wenn Sie den Inhalt dieses Verzeichnisses aufrufen, sehen Sie zwei Rezeptbücher: "external_cookbook" und "getting-started". -
Führen Sie
kitchen destroyaus, um die Instance herunterzufahren. Das nächste Beispiel verwendet eine OpsWorks Stacks-Instanz.
Berkshelf mit Stacks verwenden OpsWorks
OpsWorks Stacks unterstützt optional Stacks von Berkshelf für Chef 11.10. Um Berkshelf für Ihren Stack zu verwenden, gehen Sie wie folgt vor.
-
Aktivieren Sie Berkshelf für den Stack.
OpsWorks Stacks kümmert sich dann um die Details der Installation von Berkshelf auf den Instanzen des Stacks.
-
Fügen Sie dem Stammverzeichnis Ihres Rezeptbuch-Repositorys eine Berksfile-Datei hinzu.
Die Berksfile-Datei muss für alle abhängigen Rezeptbücher
source- undcookbook-Deklarationen enthalten.
Wenn OpsWorks Stacks Ihr benutzerdefiniertes Kochbuch-Repository auf einer Instanz installiert, verwendet es Berkshelf, um die abhängigen Kochbücher zu installieren, die im Berksfile des Repositorys deklariert sind. Weitere Informationen finden Sie unter Verwenden von Berkshelf.
Dieses Beispiel zeigt, wie Sie Berkshelf verwenden, um das Community-Kochbuch „Erste Schritte“ auf einer Stacks-Instanz zu installieren. OpsWorks Außerdem installiert Berkshelf eine Version des benutzerdefinierten Rezeptbuchs "createfile", um eine Datei in einem bestimmten Verzeichnis zu installieren. Weitere Informationen zur Funktionsweise von "createfile" finden Sie unter Installieren einer Datei mithilfe eines Rezeptbuchs.
Anmerkung
Wenn Sie zum ersten Mal ein benutzerdefiniertes Kochbuch auf einem OpsWorks Stacks-Stack installieren, sollten Sie zuerst das Beispiel durchgehen. Ausführen eines Rezepts auf einer Linux-Instance
Erstellen Sie zunächst einen Stack, wie nachfolgend kurz zusammengefasst. Weitere Informationen finden Sie unter Erstellen eines neuen Stacks.
Erstellen eines Stacks
-
Öffnen Sie die OpsWorks Stacks-Konsole
und klicken Sie auf Add Stack (Stack hinzufügen). -
Legen Sie die folgenden Einstellungen fest, übernehmen Sie für die restlichen Einstellungen die Standardwerte und klicken Sie auf Add Stack (Stack hinzufügen).
-
Name — BerksTest
-
Standard-SSH-Schlüssel — Ein EC2 Amazon-Schlüsselpaar
Wenn Sie ein EC2 Amazon-Schlüsselpaar erstellen müssen, finden Sie weitere Informationen unter EC2 Amazon-Schlüsselpaare. Das Schlüsselpaar muss sich in derselben AWS-Region befinden wie die Instance. Das Beispiel verwendet die Standardregion USA West (Oregon).
-
-
Klicken Sie auf Add a layer (Layer hinzufügen) und fügen Sie dem Stack einen benutzerdefinierten Layer mit folgenden Einstellungen hinzu.
-
Name — BerksTest
-
Kurzname — berkstest
Sie können für dieses Beispiel einen beliebigen Layer-Typ verwenden. Da jedoch für das Beispiel keine Pakete aus den anderen Layers benötigt werden, ist ein benutzerdefinierter Layer die einfachste Lösung.
-
-
Fügen Sie dem BerksTest Layer eine 24/7-Instanz mit Standardeinstellungen hinzu, aber starten Sie sie noch nicht.
Bei OpsWorks Stacks müssen sich Kochbücher in einem Remote-Repository mit einer Standardverzeichnisstruktur befinden. Anschließend geben Sie die Download-Informationen an OpsWorks Stacks weiter, das das Repository beim Start automatisch auf jede Instanz des Stacks herunterlädt. Der Einfachheit halber ist das Repository für dieses Beispiel ein öffentliches Amazon S3 S3-Archiv, aber OpsWorks Stacks unterstützt auch HTTP-Archive, Git-Repositorys und Subversion-Repositorys. Weitere Informationen finden Sie unter Rezeptbuch-Repositorys.
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?.
So erstellen Sie das Rezeptbuch-Repository
-
Erstellen Sie in Ihrem Verzeichnis
opsworks_cookbooksein Verzeichnis namensberkstest_cookbooks. Sie können dieses Verzeichnis auch an einem beliebigen anderen Ort speichern, da Sie es in ein Repository hochladen werden. -
Erstellen Sie eine Datei "Berksfile" mit folgendem Inhalt in
berkstest_cookbooks.source "https://supermarket.chef.io" cookbook 'getting-started'Diese Datei enthält die Abhängigkeiten des Rezeptbuchs "getting-started" und weist Berkshelf an, diese auf der Community-Rezeptbuch-Website herunterzuladen.
-
Fügen Sie ein Verzeichnis
createfilezuberkstest_cookbookshinzu, das Folgendes enthält.-
Eine Datei
metadata.rbmit folgendem Inhalt:name "createfile" version "0.1.0" -
Ein Verzeichnis
files/defaultmit einer Dateiexample_data.jsonmit folgendem Inhalt.{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }Sie können den Dateinamen und Inhalt frei wählen. Das Rezept kopiert einfach die Datei an den angegebenen Speicherort.
-
Ein Verzeichnis
recipesmit einer Dateidefault.rbmit folgendem Rezeptcode:directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end cookbook_file "/srv/www/shared/example_data.json" do source "example_data.json" mode 0644 action :create_if_missing endDieses Rezept erstellt
/srv/www/sharedund kopiertexample_data.jsonin dieses Verzeichnis aus dem Verzeichnisfilesdes Rezeptbuchs.
-
-
Erstellen Sie ein
.zipArchiv vonberkstest_cookbooks, laden Sie das Archiv in einen Amazon S3 S3-Bucket hoch, machen Sie das Archiv öffentlich und notieren Sie die URL des Archivs.
Jetzt können Sie die Rezeptbücher installieren und das Rezept ausführen.
So installieren Sie Rezeptbücher und führen die Rezepte aus
-
Bearbeiten Sie den Stack, um benutzerdefinierte Rezeptbücher zu aktivieren, und legen Sie folgende Einstellungen fest:
-
Repository-Typ — HTTP-Archiv
-
Repository-URL — Die URL des Kochbuch-Archivs, die Sie zuvor aufgezeichnet haben
-
Berkshelf verwalten — Ja
Die ersten beiden Einstellungen versorgen OpsWorks Stacks mit den Informationen, die es benötigt, um das Cookbook-Repository auf Ihre Instanzen herunterzuladen. Die letzte Einstellung aktiviert die Unterstützung für Berkshelf, um das Rezeptbuch "getting-started" auf die Instance herunterzuladen. Übernehmen Sie für die übrigen Einstellungen die Standardwerte und klicken Sie auf Save, um die Stack-Konfiguration zu aktualisieren und zu speichern.
-
-
Bearbeiten Sie den BerksTest Layer, um die folgenden Rezepte zum Setup-Lifecycle-Ereignis des Layers hinzuzufügen.
-
getting-started::default -
createfile::default
-
-
Starten Sie die Instance. Das Setup-Ereignis tritt ein, nachdem die Instanz den Startvorgang abgeschlossen hat. OpsWorks Stacks installiert dann das Cookbook-Repository, verwendet Berkshelf, um das Kochbuch für die ersten Schritte herunterzuladen, und führt die Einrichtung und Bereitstellung von Rezepten für den Layer aus, einschließlich und.
getting-started::defaultcreatefile::default -
Nachdem die Instance online ist, melden Sie sich mit SSH dort an. Sie sollten Folgendes sehen:
-
/srv/www/sharedmussexample_data.jsonenthalten. -
/rootmusschef-getting-started.txtenthalten.OpsWorks Stacks führt Rezepte als Root-Benutzer aus, sodass Getting-Started die Datei im Verzeichnis und nicht in Ihrem Home-Verzeichnis installiert.
/root
-