Nachahmen der Stack-Konfiguration und Bereitstellungsattribute auf Vagrant - 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.

Nachahmen der Stack-Konfiguration und Bereitstellungsattribute auf Vagrant

Wichtig

Das Tool AWS OpsWorks Stacks Der 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 AWS Support Team ein AWS Re:post oder durch AWS Premium-Support.

Anmerkung

Dieses Thema bezieht sich nur auf Linux-Instances. Test Kitchen unterstützt Windows noch nicht, daher werden Sie alle Windows-Beispiele auf ausführen AWS OpsWorks Stapelt Instanzen.

AWS OpsWorks Stacks fügt dem Knotenobjekt für jede Instanz in Ihrem Stack für jedes Lebenszyklusereignis Stackkonfigurations- und Bereitstellungsattribute hinzu. Diese Attribute sind ein Snapshot der Stack-Konfiguration einschließlich der Konfiguration der einzelnen Layer und deren Online-Instances, der Konfiguration der einzelnen bereitgestellten Apps usw. Da sich diese Attribute im Knotenobjekt befinden, kann auf sie nach jedem beliebigen Rezept zugegriffen werden. Die meisten Rezepte sind AWS OpsWorks Stacks-Instanzen verwenden eines oder mehrere dieser Attribute.

Eine Instanz, die in einer Vagrant-Box läuft, wird nicht verwaltet von AWS OpsWorks Stacks, sodass das zugehörige Knotenobjekt standardmäßig keine Stackkonfigurations- und Bereitstellungsattribute enthält. Sie können jedoch der Test Kitchen-Umgebung entsprechend geeignete Attribute hinzufügen. Test Kitchen fügt dann die Attribute zum Knotenobjekt der Instanz hinzu, und Ihre Rezepte können auf die Attribute zugreifen, genau wie auf einem AWS OpsWorks Stacks-Instanz.

In diesem Thema wird gezeigt, wie Sie eine Kopie von geeigneten Stack-Konfigurations- und Bereitstellungsattributen erstellen, die Attribute auf einer Instance installieren und dann darauf zugreifen.

Anmerkung

Wenn Sie Test Kitchen verwenden, um Tests mit Ihren Rezepten durchzuführen, bietet Fauxhai eine alternative Möglichkeit, die Konfiguration und Bereitstellung von Stacks nachzuahmen. JSON

So richten Sie das Rezeptbuch ein
  1. Erstellen Sie ein Unterverzeichnis von opsworks_cookbooks namens printjson und öffnen Sie es.

  2. Initialisieren und konfigurieren Sie Test Kitchen wie unter Beispiel 1: Installieren von Paketen beschrieben.

  3. Fügen Sie zwei Unterverzeichnisse zu printjson hinzu: recipes und environments.

Sie können die Stack-Konfigurations- und Bereitstellungsattribute beispielsweise dadurch nachahmen, dass Sie Ihrem Rezeptbuch eine Attributdatei mit den entsprechenden Definitionen hinzufügen. Besser ist es jedoch, dafür die Test Kitchen-Umgebung zu nutzen. Hierfür gibt es zwei grundlegende Ansätze:

  • Fügen Sie Attributdefinitionen zu .kitchen.yml hinzu.

    Dieser Ansatz ist insbesondere bei einer geringen Anzahl an Attributen hilfreich. Weitere Informationen finden Sie unter kitchen.yml.

  • Definieren Sie die Attribute in einer Umgebungsdatei und verweisen Sie in .kitchen.yml auf diese Datei.

    Dieser Ansatz ist normalerweise für Stackkonfigurations- und Bereitstellungsattribute vorzuziehen, da die Umgebungsdatei bereits formatiert JSON ist. Sie können eine Kopie der Attribute im JSON Format von einem geeigneten AWS OpsWorks Stacks-Instanz und füge sie einfach ein. In allen Beispielen wird eine solche Umgebungsdatei verwendet.

Der einfachste Weg, eine Stack-Konfiguration und Bereitstellungsattribute für Ihr Kochbuch zu erstellen, besteht darin, einen entsprechend konfigurierten Stack zu erstellen und die resultierenden Attribute aus einer Instanz als zu kopieren. JSON Um Ihre Test Kitchen-Umgebungsdatei verwaltbar zu halten, können Sie sie dann bearbeiten, sodass JSON sie nur die Attribute enthält, die Ihre Rezepte benötigen. Die Beispiele in diesem Kapitel basieren auf dem Stack fromErste Schritte mit Chef 11 Linux-Stacks, einem einfachen PHP Anwendungsserver-Stack mit einem Load Balancer, PHP Anwendungsservern und einem My SQL Database-Server.

Um eine Stack-Konfiguration und -Bereitstellung zu erstellen JSON
  1. Erstellen Sie MyStack wie unter beschriebenErste Schritte mit Chef 11 Linux-Stacks, einschließlich der Bereitstellung von implePHPApp S. Wenn Sie möchten, können Sie die zweite PHP App Server-Instanz weglassen, die in aufgerufen wirdSchritt 4: Skalieren MyStack. In den Beispielen werden diese Attribute nicht verwendet.

  2. Wenn Sie dies noch nicht getan haben, starten Sie die php-app1 Instanz und melden Sie sich dann mit SSH an.

  3. Führen Sie im Terminal-Fenster den folgenden agent cli-Befehl aus:

    sudo opsworks-agent-cli get_json

    Mit diesem Befehl werden die neuesten Stackkonfigurations- und Bereitstellungsattribute der Instance im JSON Format im Terminalfenster gedruckt.

  4. Kopieren Sie JSON das in eine .json Datei und speichern Sie es an einem geeigneten Ort auf Ihrer Workstation. Die Einzelheiten hängen von Ihrem SSH Kunden ab. Wenn Sie beispielsweise Pu TTY unter Windows verwenden, können Sie den Copy All to Clipboard Befehl ausführen, der den gesamten Text im Terminalfenster in die Windows-Zwischenablage kopiert. Dann können Sie den Inhalt in eine .json-Datei einfügen und nicht benötigten Text löschen.

  5. Bearbeiten Sie nach MyStack JSON Bedarf. Es gibt zahlreiche Stack-Konfigurations- und Bereitstellungsattribute, von denen Rezeptbücher meist nur einen geringen Teil nutzen. Um Ihre Umgebungsdatei verwaltbar zu halten, können Sie sie JSON so bearbeiten, dass sie die ursprüngliche Struktur beibehält, aber nur die Attribute enthält, die Ihre Kochbücher tatsächlich verwenden.

    In diesem Beispiel wird eine stark bearbeitete Version von verwendet MyStack JSON, die nur zwei ['opsworks']['stack'] Attribute enthält, und['id]. ['name'] Erstellen Sie eine bearbeitete Version von MyStack JSON, die etwa wie folgt aussieht:

    { "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }

Um dies JSON in das Node-Objekt der Instanz zu übernehmen, müssen Sie es zu einer Test Kitchen-Umgebung hinzufügen.

So fügen Sie Stack-Konfigurations- und Bereitstellungsattribute der Test Kitchen-Umgebung hinzu
  1. Erstellen Sie eine Umgebungsdatei test.json mit dem folgenden Inhalt und speichern Sie sie im Verzeichnis environments des Rezeptbuchs.

    { "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }

    Die Umgebungsdatei besteht aus folgenden Elementen:

    • default_attributes— Die Standardattribute im JSON Format.

      Diese Attribute werden dem Knotenobjekt mit dem default Attributtyp hinzugefügt. Dabei handelt es sich um den Typ, der von allen Stackkonfigurations- und JSON Bereitstellungsattributen verwendet wird. In diesem Beispiel wird die zuvor JSON gezeigte bearbeitete Version der Stack-Konfiguration und -Bereitstellung verwendet.

    • chef_type— Setzen Sie dieses Element aufenvironment.

    • json_class— Setze dieses Element aufChef::Environment.

  2. Bearbeiten Sie .kitchen.yml, um wie nachfolgend beschrieben die Test Kitchen-Umgebung festzulegen.

    --- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:

    Sie können die Umgebung definieren, indem Sie der Standarddatei .kitchen.yml, die von kitchen init erstellt wurde, folgende Elemente hinzufügen.

    provisioner

    Fügen Sie die folgenden Elemente hinzu.

    • name— Setze dieses Element aufchef_solo.

      Um das zu replizieren AWS OpsWorks Wenn Sie die Stacks-Umgebung genauer betrachten, könnten Sie den lokalen Modus des Chef-Clients anstelle von Chef Solo verwenden. Der lokale Modus ist eine Chef-Client-Option, die auf einer abgespeckten Version von Chef Server (Chef Zero) basiert und lokal auf den Instances statt auf einem Remote-Server ausgeführt wird. So können Ihre Rezepte Chef Server-Funktionen wie die Suchfunktion oder Data Bags verwenden, ohne eine Verbindung zu einem Remote-Server herstellen zu müssen.

    • environments_path— In diesem Beispiel das Cookbook-Unterverzeichnis, das die Umgebungsdatei enthält. ./environments

    suites:provisioner

    Fügen Sie ein Element solo_rb ein, bei dem das Element environment den Namen der Umgebungsdatei (ohne die Erweiterung ".json") trägt. In diesem Beispiel wird für environment test verwendet.

  3. Erstellen Sie eine Rezeptdatei default.rb mit folgendem Inhalt und speichern Sie sie im Verzeichnis recipes des Rezeptbuchs.

    log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"

    Dieses Rezept ruft nur die beiden Stack-Konfigurations- und Bereitstellungswerte ab, die Sie der Umgebung hinzugefügt haben. Obwohl das Rezept lokal in Virtual Box ausgeführt wird, referenzieren Sie diese Attribute mit derselben Knotensyntax, die Sie verwenden würden, wenn das Rezept auf einem AWS OpsWorks Stacks-Instanz.

  4. Führen Sie kitchen converge. Es sollte etwa folgendes Protokoll ausgegeben werden.

    ... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...