Verwenden der Suche auf einem Linux-Stack - 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.

Verwenden der Suche auf einem Linux-Stack

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.

Dieses Beispiel basiert auf einem Linux-Stack mit einem einzelnen PHP-Anwendungsserver. Die öffentliche IP-Adresse des Servers wird mithilfe der Chef-Suche abgerufen und dann in einer Datei im Verzeichnis /tmp gespeichert. Im Grunde werden dieselben Informationen aus dem Knotenobjekt abgerufen wie mit Direktes Abrufen von Attributwerten , der Code ist jedoch wesentlich simpler und unabhängig von der genauen Struktur der Stack-Konfigurations- und Bereitstellungsattribute.

Nachfolgend wird kurz beschrieben, wie Sie für dieses Beispiel den Stack erstellen. Weitere Informationen finden Sie unter Erstellen eines neuen Stacks.

Anmerkung

Wenn du noch kein benutzerdefiniertes Rezept auf einer AWS OpsWorks Stacks-Instanz ausgeführt hast, solltest du zuerst das Beispiel durchgehen. Ausführen eines Rezepts auf einer Linux-Instance

Erstellen eines Stacks
  1. Öffnen Sie die AWS OpsWorks  Stacks-Konsole und klicken Sie auf Add Stack (Stack hinzufügen).

  2. 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 — searchJSON

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

    Wenn Sie ein Amazon EC2 EC2-Schlüsselpaar erstellen müssen, finden Sie weitere Informationen unter Amazon EC2 EC2-Schlüsselpaare. Das Schlüsselpaar muss sich in derselben AWS-Region befinden wie die Instance. Das Beispiel verwendet die Region USA West (Oregon).

  3. Klicken Sie auf Layer hinzufügen und fügen Sie dem Stack einen PHP App Server-Layer mit Standardeinstellungen hinzu.

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

So richten Sie das Rezeptbuch ein
  1. Erstellen Sie ein Verzeichnis in opsworks_cookbooks namens searchjson und öffnen Sie es.

  2. Erstellen Sie eine Datei metadata.rb mit dem folgenden Inhalt und speichern Sie sie unter opstest.

    name "searchjson" version "0.1.0"
  3. Erstellen Sie ein Verzeichnis recipes in searchjson.

  4. Erstellen Sie eine Datei default.rb mit dem folgenden Rezept und speichern Sie sie im Verzeichnis recipes.

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    Auf Linux-Stacks wird nur der Suchindex node unterstützt. Das Rezept ruft mithilfe dieses Index eine Liste der Instances im Layer php-app ab. Da der Layer ja nur eine Instance hat, weist das Rezept diese einfach phpserver zu. Wenn der Layer mehrere Instances hätte, könnten Sie diese durchnummerieren, um die benötigten Informationen abzurufen. Jedes Listenelement ist eine Hash-Tabelle mit einer Reihe von Instance-Attributen. Das Attribut ip enthält die öffentliche IP-Adresse der Instance. Sie können die Adresse also im nachfolgenden Rezeptcode als phpserver[:ip] darstellen.

    Nachdem Sie eine Nachricht zum Chef-Protokoll hinzugefügt haben, verwendet das Rezept eine file-Ressource, um eine Datei mit dem Namen ip_addresses zu erstellen. Das Attribut content stellt phpserver[:ip] als Zeichenfolge dar. Wenn Chef die Datei ip_addresses erstellt, wird diese Zeichenfolge in der Datei gespeichert.

  5. Erstellen Sie ein .zip Archiv vonopsworks_cookbooks, laden Sie das Archiv in einen Amazon S3 S3-Bucket hoch, machen Sie das Archiv öffentlich und notieren Sie die URL des Archivs. Weitere Informationen zu Rezeptbuch-Repositorys 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?.

Jetzt können Sie das Rezeptbuch installieren und das Rezept ausführen.

So führen Sie das Rezept aus
  1. Bearbeiten Sie den Stack, um benutzerdefinierte Rezeptbücher zu aktivieren, und legen Sie folgende Einstellungen fest:

    • Repository-TypHTTP-Archiv

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

    Verwenden Sie für die übrigen Einstellungen die Standardwerte und klicken Sie auf Save (Speichern), um die Stack-Konfiguration zu aktualisieren und zu speichern.

  2. Bearbeiten Sie die benutzerdefinierte Layer-Konfiguration und weisen Sie searchjson::default sie dem Setup-Ereignis der Ebene zu. AWS OpsWorks Stacks führt das Rezept aus, nachdem die Instanz gestartet wurde oder wenn Sie das Setup-Ereignis explizit auslösen.

  3. Führen Sie den Stack-Befehl „Update Custom Cookbooks” aus, um die aktuelle Version Ihres benutzerdefinierten Rezeptbuch-Repository auf den Stack-Instances zu installieren. Wenn bereits eine ältere Version des Repositorys installiert ist, wird diese überschrieben.

  4. Führen Sie das Rezept aus, indem Sie den Stack-Befehl Setup ausführen. Dadurch wird ein Einrichtungsereignis auf der Instance ausgelöst und searchjson::default wird ausgeführt. Lassen Sie die Seite Running command setup page offen.

Nachdem das Rezept erfolgreich ausgeführt wurde, können Sie es überprüfen.

Sie überprüfen Sie searchjson
  1. Sehen Sie sich zunächst das Chef-Protokoll und das letzte Einrichtungsereignis darin an. Klicken Sie auf der Seite Running command setup page auf show in der Spalte Log der Instance „php-app1”, um das Protokoll anzuzeigen. Blättern Sie nach unten zu Ihrer Protokollnachricht in der Mitte. Diese sieht etwa wie folgt aus.

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. Melden Sie sich über SSH bei der Instance an und rufen Sie den Inhalt des Verzeichnisses /tmp auf. Dieses sollte eine Datei ip_addresses mit der IP-Adresse enthalten.