Schritt 2.3: Implementieren eines benutzerdefinierten Rezeptbuchs - 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.

Schritt 2.3: Implementieren eines benutzerdefinierten Rezeptbuchs

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 oder über den AWS Premium-Support.

Obwohl ein Stack im Grunde ein Container für Instances ist, fügen Sie einem Stack Instances nicht direkt hinzu. Sie fügen mindestens einen Layer hinzu. Jeder Layer repräsentiert dabei eine Gruppe zusammengehöriger Instances, die Sie dann den Layers hinzufügen.

Eine Ebene ist im Grunde ein Blueprint, den AWS OpsWorks Stacks verwendet, um eine Reihe von Amazon EC2 EC2-Instances mit derselben Konfiguration zu erstellen. Eine Instance beginnt mit einer Basisversion des Betriebssystems und der Layer der Instance führt verschiedene Aufgaben auf der Instance aus, um dieses Konzept zu implementieren, darunter:

  • Erstellen von Verzeichnissen und Dateien

  • Verwalten von Benutzern

  • Installieren und Konfigurieren von Software

  • Starten oder Beenden von Servern

  • Bereitstellen von Anwendungscode und zugehörigen Dateien

Eine Ebene führt Aufgaben auf Instances durch, indem sie Chef-Rezepte — kurz Rezepte — ausführt. Ein Rezept ist eine Ruby-Anwendung, die mithilfe der domänenspezifischen Sprache von Chef den endgültigen Zustand der Instance beschreibt. Bei AWS OpsWorks Stacks wird jedes Rezept normalerweise einem der Lebenszyklusereignisse der Ebene zugewiesen: Setup, Configuration, Deploy, Undeploy und Shutdown. Wenn ein Lebenszyklusereignis auf einer Instanz eintritt, führt AWS OpsWorks Stacks die Rezepte des Ereignisses aus, um die entsprechenden Aufgaben auszuführen. Das Setup-Ereignis tritt beispielsweise ein, nachdem der Startvorgang einer Instanz abgeschlossen ist. AWS OpsWorks Stacks führt dann die Setup-Rezepte aus, mit denen normalerweise Aufgaben wie das Installieren und Konfigurieren von Serversoftware und das Starten der zugehörigen Dienste ausgeführt werden.

AWS OpsWorks Stacks stellt jeder Ebene eine Reihe von integrierten Rezepten zur Verfügung, mit denen Standardaufgaben ausgeführt werden. Mithilfe von benutzerdefinierten Rezepten, die Sie den einzelnen Lebenszyklusereignissen eines Layers zuweisen, können Sie die Funktionalität eines Layers um zusätzliche Aufgaben erweitern. Windows-Stacks unterstützen benutzerdefinierte Ebenen mit einem minimalen Rezeptsatz ausschließlich für einige Basisaufgaben. Um Ihren Windows-Instances Funktionen hinzuzufügen, müssen Sie benutzerdefinierte Rezepte implementieren, um beispielsweise Software zu installieren oder Anwendungen bereitzustellen. In diesem Thema wird beschrieben, wie Sie einen einzelnen benutzerdefinierten Layer erstellen, um IIS-Instances zu unterstützen.

Eine kurze Einführung in Rezeptbücher und Rezepte

Ein Rezept definiert mindestens einen Aspekt des erwarteten Status einer Instance: welche Verzeichnisse sie haben sollte, welche Softwarepakete installiert sein sollten, welche Apps bereitgestellt werden sollten usw. Rezepte sind in einem Rezeptbuch zusammengefasst. Dieses enthält in der Regel ein oder mehrere zusammengehörige Rezepte sowie die zugehörigen Dateien wie Vorlagen zum Erstellen von Konfigurationsdateien.

In diesem Thema werden Sie grundlegend an Rezepte herangeführt und erfahren, wie Sie ein Rezeptbuch implementieren, um einen einfachen benutzerdefinierten IIS-Layer zu unterstützen. Weitere allgemeine Informationen zu Rezeptbüchern finden Sie unter Cookbooks und Rezepte. Eine detaillierte Einführung in die Implementierung von Rezeptbüchern einschließlich Windows-spezifischer Themen finden Sie unter Rezeptbücher 101.

Chef-Rezepte sind technisch gesehen Ruby-Anwendungen. Ein Großteil des Codes ist jedoch in Chef DSL geschrieben. DSL besteht größtenteils aus einer Reihe von Ressourcen, mithilfe derer sich Aspekte des Zustands einer Instance beschreiben lassen. Eine directory-Ressource definiert beispielsweise ein Verzeichnis, das einem System hinzugefügt werden soll. Im folgenden Beispiel wird das Verzeichnis C:\data des angegebenen Benutzers mit umfassenden Rechten definiert, das keine Rechte vom übergeordneten Verzeichnis erbt.

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Wenn Chef ein Rezept ausführt, wird jede Ressource einzeln ausgeführt. Dabei werden die Daten an einen zugehörigen Anbieter übergeben, ein Ruby-Objekt, das die Einzelheiten bei der Modifizierung des Instance-Zustands verarbeitet. In diesem Fall erstellt der Anbieter ein neues Verzeichnis mit der angegebenen Konfiguration.

Das benutzerdefinierte Rezeptbuch für den benutzerdefinierten IIS-Layer muss die folgenden Aufgaben ausführen:

  • Installieren der IIS-Funktion und Starten des Service

    Diese Aufgabe wird in der Regel während der Einrichtung direkt nach dem Hochfahren der Instance ausgeführt.

  • Bereitstellen einer App für die Instance, in diesem Beispiel eine einfache HTML-Seite

    Diese Aufgabe wird in der Regel während der Einrichtung ausgeführt. Apps müssen üblicherweise jedoch regelmäßig aktualisiert werden, daher müssen Sie auch Updates bereitstellen, während die Instance bereits online ist.

Sie können alle diese Aufgaben mit nur einem Rezept ausführen. Es empfiehlt sich jedoch, für Einrichtung und Bereitstellung jeweils eigene Rezepte zu verwenden. So können Sie App-Updates jederzeit bereitstellen, ohne dafür Einrichtungscode ausführen zu müssen. Nachfolgend wird beschrieben, wie Sie ein Rezeptbuch einrichten, um einen benutzerdefinierten IIS-Layer zu unterstützen. In den nachfolgenden Themen erfahren Sie, wie Sie die Rezepte implementieren.

Dies sind Ihre ersten Schritte
  1. Erstellen Sie ein Verzeichnis namens iis-cookbook in einem lokalen Verzeichnis auf Ihrem Computer.

  2. Fügen Sie eine Datei metadata.rb mit dem folgenden Inhalt zu iis-cookbook hinzu.

    name "iis-cookbook" version "0.1.0"

    In diesem Beispiel enthält die Datei metadata.rb nur minimale Daten. Weitere Informationen zur Verwendung dieser Datei finden Sie unter metadata.rb.

  3. Fügen Sie ein Verzeichnis recipes zu iis-cookbook hinzu.

    Dieses Verzeichnis, das den Namen recipes haben muss, enthält die Rezepte des Rezeptbuchs.

Im Allgemeinen können Rezeptbücher verschiedene andere Verzeichnisse enthalten. Wenn ein Rezept beispielsweise eine Vorlage zum Erstellen einer Konfigurationsdatei enthält, wird diese Vorlage normalerweise im Verzeichnis templates\default gespeichert. Das Rezeptbuch in diesem Beispiel besteht nur aus Rezepten und benötigt daher keine weiteren Verzeichnisse. In diesem Beispiel wird außerdem nur ein einziges Rezeptbuch verwendet. Für komplexere Projekte können Sie jedoch auch beliebig viele Rezeptbücher verwenden. Es bietet sich beispielsweise an, für Einrichtung und Bereitstellung jeweils eigene Rezeptbücher zu verwenden. Weitere Beispiele für Rezeptbücher finden Sie unter Cookbooks und Rezepte.

Implementieren eines Rezepts zum Installieren und Starten von IIS

IIS ist eine Windows-Funktion, die zu einer Reihe optionaler Systemkomponenten gehört, die Sie auf Windows Server installieren können. Sie können IIS mithilfe eines Rezepts auf eine der folgenden Weisen installieren:

Anmerkung

powershell_script ist eine der wichtigsten Ressourcen für Windows-Rezepte. Sie können damit eine Vielzahl von Aufgaben auf einer Instanz ausführen, indem Sie ein PowerShell Skript oder Cmdlet ausführen. Skripte sind insbesondere für Aufgaben hilfreich, die von Chef-Ressourcen nicht unterstützt werden.

In diesem Beispiel wird ein PowerShell Skript zum Installieren und Starten des Webservers (IIS) ausgeführt. Das windows-Rezeptbuch wird im weiteren Verlauf dieser Anleitung beschrieben. Ein Beispiel für die Installation von IIS mithilfe von windows_feature finden Sie unter Installieren einer Windows-Funktion: IIS.

Fügen Sie ein Rezept namens install.rb mit dem folgenden Inhalt zum Verzeichnis recipes des Rezeptbuchs hinzu.

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

Das Rezept enthält zwei Ressourcen.

powershell_script

powershell_scriptführt das angegebene PowerShell Skript oder Cmdlet aus. Das Beispiel verwendet folgende Attributeinstellungen:

  • code— Die auszuführenden PowerShell Cmdlets.

    In diesem Beispiel wird ein Install-WindowsFeature-Cmdlet zur Installation von Web Server (IIS) ausgeführt. Allgemein kann das Attribut code beliebig viele Zeilen haben. Sie können also alle Cmdlets ausführen, die Sie benötigen.

  • not-if— Ein Guard-Attribut, das sicherstellt, dass das Rezept IIS nur installiert, wenn es noch nicht installiert wurde.

    Rezepte sind in der Regel idempotent, damit sie dieselbe Aufgabe nur einmal ausführen.

Jede Ressource hat eine Aktion, über die die Aktion festgelegt ist, die der Anbieter ausführt. Für dieses Beispiel gibt es keine explizite Aktion, daher führt der Anbieter die :run Standardaktion aus, bei der das angegebene PowerShell Skript ausgeführt wird. Weitere Informationen finden Sie unter Ein PowerShell Windows-Skript ausführen.

Service nicht zulässig

Ein service verwaltet einen Service, in diesem Fall den Web Server IIS-Service (W3SVC). Im Beispiel werden Standardattribute verwendet und zwei Aktionen festgelegt, :start und :enable, um IIS zu starten und zu aktivieren.

Anmerkung

Wenn Sie Software über ein Paketinstallationsprogramm wie MSI installieren möchten, können Sie eine windows_package-Ressource verwenden. Weitere Informationen finden Sie unter Installieren eines Pakets.

Aktivieren des benutzerdefinierten Rezeptbuchs

AWS OpsWorks Stacks führt auf jeder Instanz Rezepte aus einem lokalen Cache aus. Gehen Sie wie folgt vor, um eigene benutzerdefinierte Rezepte auszuführen:

  • Speichern Sie das Rezeptbuch in einem Remote-Repository.

    AWS OpsWorks Stacks lädt die Kochbücher aus diesem Repository in den lokalen Cache jeder Instanz herunter.

  • Bearbeiten Sie den Stack, um benutzerdefinierte Rezeptbücher zu aktivieren.

    Benutzerdefinierte Rezeptbücher sind standardmäßig deaktiviert und müssen für den Stack zunächst aktiviert werden. Außerdem müssen Sie die URL des Repositorys sowie die dazugehörigen Informationen angeben.

AWS OpsWorks Stacks unterstützt S3-Archive und Git-Repositorys für benutzerdefinierte Kochbücher. In diesem Beispiel wird ein S3-Archiv verwendet. Weitere Informationen finden Sie unter Rezeptbuch-Repositorys.

So verwenden Sie ein S3-Archiv
  1. Erstellen Sie ein .zip-Archiv des Verzeichnisses iis-cookbook.

    AWS OpsWorks Stacks unterstützt auch .tgz (mit Gzip komprimierte Tar-) Archive für Windows-Stacks.

  2. Laden Sie das Archiv in einen S3-Bucket in der Region USA West (Nordkalifornien) hoch und veröffentlichen Sie die Datei. Sie können auch private S3-Archive verwenden, öffentliche Archive sind für dieses Beispiel jedoch ausreichend und einfacher zu handhaben.

    1. Melden Sie sich bei der Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/.

    2. Wenn Sie noch keinen Bucket angelegt habenus-west-1, wählen Sie Create Bucket und erstellen Sie einen Bucket in der Region USA West (Nordkalifornien).

    3. Wählen Sie in der Bucket-Liste den Namen des Buckets aus, in den Sie die Datei hochladen möchten, und danach Upload (Hochladen).

    4. Wählen Sie Add Files (Dateien hinzufügen) aus.

    5. Wählen Sie die hochzuladende Archivdatei und danach Open (Öffnen).

    6. Wählen Sie unten im Dialog Upload - Select Files and Folders (Hochladen - Dateien und Ordner auswählen) die Option Set Details (Details festlegen) aus.

    7. Wählen Sie unten im DialogSet Details (Details festlegen) die Option Set Permissions (Berechtigungen festlegen) aus.

    8. Wählen Sie im Dialog Set Permissions (Berechtigungen festlegen) die Option Make everything public (Alles veröffentlichen) aus.

    9. Wählen Sie unten im DialogSet Permissions (Berechtigungen festlegen) die Option Start Upload (Hochladen starten) aus. Nach dem Upload wird die Datei iis-cookbook.zip in Ihrem Bucket angezeigt.

    10. Wählen Sie den Bucket und danach die Registerkarte Properties (Eigenschaften) für den Bucket aus. Notieren Sie sich neben Link (Link) die URL der Archivdatei.

    Weitere Informationen zum Hochladen von Dateien in einen Amazon S3 S3-Bucket finden Sie unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch? im Amazon S3 S3-Konsolen-Benutzerhandbuch.

Wichtig

Bisher hat diese Anleitung Sie nur wenig Zeit gekostet und AWS OpsWorks  Stacks selbst ist kostenlos. Sie müssen jedoch für alle AWS-Ressourcen bezahlen, die Sie verwenden, z. B. Amazon S3 S3-Speicher. Sobald Sie das Archiv hochladen, entstehen Ihnen Kosten. Weitere Informationen finden Sie unter AWS-Preise.

So aktivieren Sie benutzerdefinierte Rezeptbücher für den Stack
  1. Wählen Sie in der AWS OpsWorks Stacks-Konsole im Navigationsbereich Stack und dann oben rechts Stack-Einstellungen aus.

  2. Wählen Sie oben rechts auf der Seite Settings (Einstellungen) die Option Edit (Bearbeiten) aus.

  3. Legen Sie auf der Seite Settings (Einstellungen) die Option Use custom Chef cookbooks (Benutzerdefinierte Chef-Rezeptbücher verwenden) auf Yes (Ja) fest und geben Sie die folgenden Informationen ein:

    • Repository-Typ — S3-Archiv.

    • Repository-URL — Die S3-URL der Kochbuch-Archivdatei, die Sie zuvor aufgenommen haben.

  4. Wählen Sie Save (Speichern) aus, um die Stack-Konfiguration zu aktualisieren.

AWS OpsWorks Stacks installiert dein benutzerdefiniertes Kochbuch auf allen neuen Instanzen. Auf Online-Instances werden benutzerdefinierte Rezeptbücher jedoch nicht automatisch durch AWS OpsWorks Stacks installiert oder aktualisiert. Dies können Sie, wie im weiteren Verlauf dieser Anleitung beschrieben, manuell tun.