Überschreiben von integrierten Attributen - 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.

Überschreiben von integrierten Attributen

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.

Anmerkung

Dieses Thema bezieht sich nur auf Linux-Stacks. Auf Windows-Stacks können Sie integrierte Attribute nicht überschreiben.

AWS OpsWorks Stacks installiert auf jeder Instanz eine Reihe integrierter Kochbücher. Viele dieser Rezeptbücher unterstützen die integrierten Layers und über ihre Attributdateien werden zahlreiche Standardsystem- und -anwendungseinstellungen wie die Apache-Serverkonfiguration festgelegt. Wenn Sie diese Einstellungen in Attributdateien speichern, können Sie viele Konfigurationseinstellungen anpassen, indem Sie die entsprechenden integrierten Attribute auf eine der folgenden Weisen überschreiben:

  • Definieren Sie das Attribut in benutzerdefinierter JSON.

    Diese Methode ist einfach und flexibel. Allerdings müssen Sie das benutzerdefinierte JSON-Objekt manuell eingeben, daher gibt es keine robuste Lösung, die Attributdefinitionen zu verwalten.

  • Implementieren Sie ein benutzerdefiniertes Rezeptbuch und definieren Sie das Attribut in einer Attributdatei customize.rb.

    Diese Methode ist zwar weniger flexibel als eine benutzerdefinierte JSON, aber weniger fehleranfällig, da Sie benutzerdefinierte Rezeptbücher an der Quelle kontrollieren können.

In diesem Thema wird anhand des Apache-Servers beispielhaft beschrieben, wie Sie mit der Attributdatei eines benutzerdefinierten Rezeptbuchs integrierte Attribute überschreiben können. Weitere Informationen zum Überschreiben von Attributen mit benutzerdefinierter JSON finden Sie unter Nutzen eines benutzerdefinierten JSON-Objekts. Eine allgemeine Beschreibung, wie Attribute überschrieben werden, finden Sie unter Überschreiben der Attribute.

Anmerkung

Konfigurationseinstellungen lassen sich am besten durch Überschreiben von Attributen anpassen. Jedoch sind Einstellungen nicht immer in Attributen gespeichert. In diesem Fall können Sie die Konfigurationsdatei oft anpassen, indem Sie die Vorlage überschreiben, die von integrierten Rezepten zum Erstellen der Konfigurationsdatei verwendet wird. Ein Beispiel finden Sie unter Überschreiben von integrierten Vorlagen.

Die integrierten Attribute sind in der Regel Werte in den Vorlagendateien, anhand derer Einrichtungsrezepte Konfigurationsdateien erstellen. Zum Beispiel verwendet eines der apache2-Einrichtungsrezepte, default.rb, die Vorlage apache2.conf.erb, um die Hauptkonfigurationsdatei des Apache-Servers, httpd.conf (Amazon Linux) oder apache2.conf (Ubuntu) zu erstellen. Nachfolgend finden Sie einen Auszug aus der Vorlagendatei:

... # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %> # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %> ## ## Server-Pool Size Regulation (MPM specific) ## ...

Die Einstellung KeepAliveTimeout in diesem Beispiel ist der Wert des Attributs [:apache][:keepalivetimeout]. Der Standardwert dieses Attributs wird in der Attributdatei apache2apache.rb des Rezeptbuchs festgelegt, wie der nachfolgende Auszug zeigt:

... # General settings default[:apache][:listen_ports] = [ '80','443' ] default[:apache][:contact] = 'ops@example.com' default[:apache][:log_level] = 'info' default[:apache][:timeout] = 120 default[:apache][:keepalive] = 'Off' default[:apache][:keepaliverequests] = 100 default[:apache][:keepalivetimeout] = 3 ...
Anmerkung

Weitere Informationen zu häufig verwendeten integrierten Attributen finden Sie unter Integrierte Rezeptbuchattribute.

Damit integrierte Attribute überschrieben werden können, enthalten alle integrierten Rezeptbücher die Attributdatei customize.rb, die über eine include_attribute-Anweisung in allen Modulen integriert ist. Die Datei customize.rb eines integrierten Rezeptbuchs enthält keine Attributdefinitionen und wirkt sich nicht auf integrierte Attribute aus. Wenn Sie integrierte Attribute überschreiben möchten, erstellen Sie ein benutzerdefiniertes Rezeptbuch mit demselben Namen wie das integrierte Rezeptbuch und speichern Ihre angepassten Attributdefinitionen in einer Attributdatei mit dem Namen customize.rb. Diese Datei hat Vorrang vor der integrierten Version und wird auf allen zugehörigen Modulen gespeichert. Wenn Sie in Ihrer Datei customize.rb integrierte Attribute definieren, überschreiben diese die entsprechenden integrierten Attribute.

In diesem Beispiel wird gezeigt, wie Sie das intergierte Attribut [:apache][:keepalivetimeout] vom ursprünglichen Wert 3 auf 5 setzen. Dieselbe Methode lässt sich auch auf andere integrierte Attribute anwenden. Achten Sie jedoch darauf, welche Attribute Sie überschreiben. Wenn Sie beispielsweise Attribute im Namespace opsworks überschreiben, kann dies zu Problemen mit einigen integrierten Rezepten führen.

Wichtig

Versuchen Sie nicht, integrierte Attribute zu überschreiben, indem Sie eine Kopie der integrierten Attributdatei bearbeiten. Sie könnten zwar eine Kopie von apache.rb im Verzeichnis apache2/attributes Ihres benutzerdefinierten Rezeptbuchs speichern und einige Einstellungen anpassen. Diese Datei hat jedoch Vorrang vor der integrierten Version, sodass die integrierten Rezepte nun Ihre Version von apache.rb verwenden. Wenn AWS OpsWorks Stacks die integrierte apache.rb Datei später ändert, erhalten Rezepte die neuen Werte nicht, es sei denn, Sie aktualisieren Ihre Version manuell. Durch die Verwendung customize.rb überschreiben Sie nur die angegebenen Attribute. Die integrierten Rezepte rufen weiterhin automatisch up-to-date Werte für jedes Attribut ab, das Sie nicht überschrieben haben.

Erstellen Sie zunächst ein benutzerdefiniertes Rezeptbuch.

So erstellen Sie das Rezeptbuch
  1. Erstellen Sie in Ihrem Verzeichnis opsworks_cookbooks ein Rezeptbuchverzeichnis namens apache2 und öffnen Sie es.

    Damit das benutzerdefinierte Rezeptbuch integrierte Attribute überschreiben kann, muss es denselben Namen wie das integrierte Rezeptbuch haben, in diesem Beispiel also apache2.

  2. Erstellen Sie im Verzeichnis apache2 ein Verzeichnis attributes.

  3. Erstellen Sie eine Datei customize.rb im Verzeichnis attributes und definieren Sie darin die Attribute des integrierten Rezeptbuchs, die Sie überschreiben möchten. In diesem Beispiel sollte die Datei folgenden Text enthalten:

    normal[:apache][:keepalivetimeout] = 5
    Wichtig

    Damit ein benutzerdefiniertes Attribut ein integriertes Attribut überschreiben kann, muss es mindestens den Typ normal sowie denselben Knotennamen wie das entsprechende integrierte Attribut aufweisen. Über den Typ normal wird sichergestellt, dass das benutzerdefinierte Attribut Vorrang vor integrierten Attributen hat, die den Typ default haben. Weitere Informationen finden Sie unter Priorität von Attributen.

  4. Erstellen Sie ein opsworks_cookbooks benanntes .zip Archiv opsworks_cookbooks.zip und laden Sie das Archiv in einen Amazon Simple Storage Service (Amazon S3) -Bucket hoch. Machen Sie die Datei der Einfachheit halber öffentlich. Notieren Sie sich die URL. Sie können Ihre Kochbücher auch in einem privaten Amazon S3 S3-Archiv oder in anderen Repository-Typen speichern. 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?.

Erstellen Sie einen Stack und installieren Sie das Rezeptbuch, um das benutzerdefinierte Attribut zu verwenden.

So verwenden Sie benutzerdefinierte Attribute
  1. Öffnen Sie die AWS OpsWorks  Stacks-Konsole und wählen Sie dann Add Stack (Stack hinzufügen) aus.

  2. Legen Sie die folgenden Standardeinstellungen fest.

    • Name — ApacheConfig

    • Region — USA West (Oregon)

      Du kannst deinen Stack in jeder Region platzieren, aber wir empfehlen US West (Oregon) für Tutorials.

    • Standard-SSH-Schlüssel — Ein EC2-Schlüsselpaar

      Falls Sie ein EC2-Schlüsselpaar erstellen müssen, finden Sie dazu weitere Informationen unter Amazon EC2-Schlüsselpaare. Das Schlüsselpaar muss sich in derselben AWS-Region befinden wie der Stack.

    Wählen Sie Advanced >> (Erweiterte Einstellungen >>) aus, bestätigen Sie die Option Use custom Chef cookbooks (Benutzerdefinierte Rezeptbücher verwenden) mit Yes und legen Sie anschließend die folgenden Einstellungen fest:

    • Repository-Typ — HTTP-Archiv

    • Repository-URL — Die URL des Kochbucharchivs, die Sie zuvor aufgezeichnet haben

    Übernehmen Sie für die anderen Einstellungen die Standardwerte und wählen Sie Add Stack aus, um den Stack zu erstellen.

    Anmerkung

    In diesem Beispiel wird das Standardbetriebssystem Amazon Linux verwendet. Sie können aber auch Ubuntu verwenden. Der einzige Unterschied besteht darin, dass auf Ubuntu-Systemen das integrierte Einrichtungsrezept eine Konfigurationsdatei mit denselben Einstellungen namens apache2.conf erstellt und sie im Verzeichnis /etc/apache2 speichert.

  3. Wählen Sie Ebene hinzufügen und fügen Sie dem Stack dann eine Java App Serverebene mit Standardeinstellungen hinzu.

  4. Fügen Sie dem Layer eine 24/7-Instance mit den Standardeinstellungen hinzu und starten Sie sie.

    Für dieses Beispiel ist eine t2.Micro-Instance ausreichend.

  5. Nachdem die Instance online ist, melden Sie sich mit SSH dort an. Die Datei httpd.conf ist im Verzeichnis /etc/httpd/conf. In der Datei sehen Sie Ihre benutzerdefinierte Einstellung für KeepAliveTimeout. Die übrigen Einstellungen haben die Standardwerte aus der integrierten Datei apache.rb. Der relevante Teil der Datei httpd.conf sollte etwa wie folgt aussehen:

    ... # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 5 ...