Beispiel 9: Verwenden von Amazon EC2-Instances - 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.

Beispiel 9: Verwenden von Amazon EC2-Instances

Wichtig

AWS OpsWorks Stacks akzeptiert keine neuen Kunden mehr. Bestehende Kunden können die OpsWorks Konsole, API, CLI und CloudFormation Ressourcen bis zum 26. Mai 2024 normal nutzen. Zu diesem Zeitpunkt werden sie eingestellt. Um sich auf diesen Übergang vorzubereiten, empfehlen wir Ihnen, Ihre Stacks AWS Systems Manager so schnell wie möglich auf umzustellen. Weitere Informationen finden Sie unter AWS OpsWorks StacksHäufig gestellte Fragen zum Lebensende und Migrieren Sie Ihre AWS OpsWorks Stacks Anwendungen zu AWS Systems Manager Application Manager.

Zu diesem Zeitpunkt haben Sie Instances lokal in ausgeführt VirtualBox. Dies ist zwar schnell und einfach, aber Sie möchten Ihre Rezepte schließlich auf einer Amazon EC2 testen. Insbesondere wenn Sie Rezepte auf Amazon Linux ausführen möchten, ist es nur auf Amazon EC2 verfügbar. Sie können ein ähnliches System wie CentOS für die Vorabimplementierung und das Testen verwenden, aber die einzige Möglichkeit, Ihre Rezepte auf Amazon Linux vollständig zu testen, ist mit einer Amazon EC2-Instance.

In diesem Thema wird gezeigt, wie Rezepte auf einer Amazon EC2 ausgeführt werden. Dafür verwenden Sie Test Kitchen und Vagrant auf dieselbe Weise wie in den vorherigen Abschnitten, allerdings gibt es zwei Unterschiede:

  • Anstelle von Vagrant wird kitchen-ec2 als Treiber eingesetzt.

  • Die .kitchen.yml Datei des Cookbooks muss mit den Informationen konfiguriert werden, die zum Starten der Amazon EC2 erforderlich sind.

Anmerkung

Alternativ können Sie das Vagrant-Plug-in vagrant-aws verwenden. Weitere Informationen finden Sie unter Vagrant AWS Provider.

Sie benötigen AWS-Anmeldeinformationen, um eine Amazon EC2-Instance zu erstellen. Falls Sie noch kein AWS-Konto haben, können Sie wie folgt eines anlegen.

So melden Sie sich für ein AWS-Konto an

Wenn Sie kein AWS-Konto haben, führen Sie die folgenden Schritte zum Erstellen durch.

Anmeldung für ein AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/signup.

  2. Folgen Sie den Online-Anweisungen.

    Bei der Anmeldung müssen Sie auch einen Telefonanruf entgegennehmen und einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für ein AWS-Konto anmelden, wird ein Root-Benutzer des AWS-Kontos erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen eine Bestätigungs-E-Mail, sobald die Anmeldung abgeschlossen ist. Sie können jederzeit Ihre aktuelle Kontoaktivität anzeigen und Ihr Konto verwalten. Rufen Sie dazu https://aws.amazon.com/ auf und klicken Sie auf Mein Konto.

Erstellen eines Administratorbenutzers

Nachdem Sie sich für ein AWS-Kontoangemeldet haben, sichern Sie Ihr Root-Benutzer des AWS-Kontos, aktivieren Sie AWS IAM Identity Centerund erstellen Sie einen administrativen Benutzer, damit Sie nicht den Root-Benutzer für alltägliche Aufgaben verwenden.

Schützen Ihres Root-Benutzer des AWS-Kontos
  1. Melden Sie sich bei der AWS Management Console als Kontobesitzer an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto-E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-AnmeldungBenutzerhandbuch zu .

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für den Root-Benutzer.

    Anweisungen dazu finden Sie unter Aktivieren eines virtuellen MFA-Geräts für den Root-Benutzer Ihres AWS-Konto (Konsole) im IAM-Benutzerhandbuch.

Erstellen eines Administratorbenutzers
  1. Aktivieren von IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Im IAM Identity Center gewähren Sie einem administrativen Benutzer administrativen Zugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit dem standardmäßigen IAM-Identity-Center-Verzeichnis konfigurieren im AWS IAM Identity Center-Benutzerhandbuch.

Anmelden als Administratorbenutzer
  • Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-URL, die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM-Identity-Center-Benutzer erstellt haben.

    Hilfe bei der Anmeldung mit einem IAM-Identity-Center-Benutzer finden Sie unter Anmelden beim AWS-Zugangsportal im AWS-Anmeldung Benutzerhandbuch zu.

Sie sollten einen IAM-Benutzer mit Berechtigungen für den Zugriff auf Amazon EC2 erstellen und die Zugriffs- und geheimen Schlüssel des Benutzers an einem sicheren Ort auf Ihrer Workstation speichern. Amazon EC2 Test Kitchen verwendet diese Anmeldeinformationen für die Instance-Erstellung. Am besten stellen Sie die Anmeldeinformationen für Test Kitchen bereit, indem Sie die Schlüssel den folgenden Umgebungsvariablen auf der Workstation zuweisen.

Warnung

IAM-Benutzer verfügen über langfristige Anmeldeinformationen, was ein Sicherheitsrisiko darstellt. Um dieses Risiko zu minimieren, empfehlen wir, dass Sie diesen Benutzern nur die Berechtigungen gewähren, die sie zur Ausführung der Aufgabe benötigen, und dass Sie diese Benutzer entfernen, wenn sie nicht mehr benötigt werden.

  • AWS_ACCESS_KEY – Der Zugriffsschlüssel Ihres Benutzers, der etwa wie AKIAIOSFODNN7EXAMPLE aussieht.

  • AWS_SECRET_KEY – Der geheime Schlüssel Ihres Benutzers, der etwa wJalrXUtnFEMI /K7MDENG/bPxRfiCYEXAMPLEKEY aussehen wird.

Auf diese Weise wird vermieden, dass Ihre Kontodaten versehentlich offengelegt werden, wenn Sie z. B. ein Projekt, das Ihre Anmeldeinformationen enthält, in ein öffentliches Repository hochladen.

So richten Sie das Rezeptbuch ein
  1. Für die Verwendung des kitchen-ec2-Treibers muss das Paket ruby-dev auf Ihrem System installiert sein. Im folgenden Beispiel wird veranschaulicht, wie Sie das Paket mit aptitude auf einem Ubuntu-System installieren.

    sudo aptitude install ruby1.9.1-dev
  2. Bei kitchen-ec2 handelt es sich um einen Gem-Treiber, der wie folgt installiert wird:

    gem install kitchen-ec2

    Abhängig von Ihrer Workstation benötigen Sie hierfür womöglich sudo oder einen Ruby-Umgebungsmanager wie RVM. Dieses Verfahren wurde mit Version 0.8.0 des kitchen-ec2-Treibers getestet, jedoch gibt es inzwischen neuere Versionen. Um eine bestimmte Version zu installieren, führen Sie gem install kitchen-ec2 -v <version number> aus.

  3. Sie müssen ein Amazon EC2-SSH-Schlüsselpaar angeben, mit dem Test Bol eine Verbindung mit der Instance herstellen kann. Wenn Sie kein Amazon EC2-Schlüsselpaar haben, finden Sie unter Amazon EC2-Schlüsselpaare Informationen zum Erstellen eines Schlüsselpaars. Das Schlüsselpaar muss sich in derselben AWS-Region befinden wie die Instance. Das Beispiel verwendet USA West (Nordkalifornien).

    Wenn Sie ein Schlüsselpaar ausgewählt haben, erstellen Sie in opsworks_cookbooks das Unterverzeichnis ec2_keys und kopieren die Datei mit dem privaten Schlüssel des Schlüsselpaars (.pem) in das Unterverzeichnis. Der private Schlüssel wird nur in ec2_keys gespeichert, um den Code ein wenig zu vereinfachen; er kann überall auf dem System gespeichert werden.

  4. Erstellen Sie ein Unterverzeichnis von opsworks_cookbooks namens createdir-ec2 und öffnen Sie es.

  5. Fügen Sie eine Datei metadata.rb zu createdir-ec2 mit dem folgenden Inhalt hinzu:

    name "createdir-ec2" version "0.1.0"
  6. Initialisieren Sie Test Kitchen wie unter Beispiel 1: Installieren von Paketen beschrieben. Im folgenden Abschnitt wird beschrieben, wie Sie konfigurieren.kitchen.yml, was für Amazon EC2 deutlich komplizierter ist.

  7. Fügen Sie ein Unterverzeichnis recipes zu createdir-ec2 hinzu.

Konfigurieren von .kitchen.yml für Amazon EC2

Sie konfigurieren .kitchen.yml mit den Informationen, die der kitchen-ec2 Treiber zum Starten einer entsprechend konfigurierten Amazon EC2 benötigt. Im Folgenden finden Sie ein Beispiel für eine -.kitchen.ymlDatei für eine Amazon Linux-Instance in der Region USA West (Nordkalifornien).

driver: name: ec2 aws_ssh_key_id: US-East1 region: us-west-1 availability_zone: us-west-1c require_chef_omnibus: true security_group_ids: sg........ subnet_id: subnet-......... associate_public_ip: true interface: dns provisioner: name: chef_solo platforms: -name: amazon driver: image_id: ami-xxxxxxxx transport: username: ec2-user ssh_key: ../ec2_keys/US-East1.pem suites: - name: default run_list: - recipe[createdir-ec2::default] attributes:

In den Abschnitten provisioner und suites können Sie die Standardeinstellungen verwenden, aber für driver und platforms müssen diese angepasst werden. In diesem Beispiel werden nur die minimal erforderlichen Einstellungen angepasst, ansonsten werden Standardwerte genutzt. Eine vollständige Liste der kitchen-ec2-Einstellungen finden Sie unter Kitchen::Ec2: A Test Kitchen Driver for Amazon EC2.

Im Beispiel werden die folgenden driver-Attribute festgelegt. Es wird vorausgesetzt, dass Sie den Zugriffsschlüssel und den geheimen Schlüssel Ihres Benutzers den Standardumgebungsvariablen zugewiesen haben (wie zuvor erläutert). Diese Schlüssel werden vom Treiber standardmäßig verwendet. Andernfalls müssen Sie die Schlüssel explizit deklarieren, indem Sie aws_access_key_id und aws_secret_access_key zu den driver-Attributen hinzufügen und auf die entsprechenden Schlüsselwerte festlegen.

Name

(Erforderlich) Dieses Attribut muss auf ec2 festgelegt werden.

aws_ssh_key_id

(Erforderlich) Der Name des Amazon EC2-SSH-Schlüsselpaars, der US-East1 in diesem Beispiel benannt ist.

transport.ssh_key

(Erforderlich) Die Datei mit dem privaten Schlüssel (.pem) zum Schlüssel, den Sie für aws_ssh_key_id angegeben haben. In diesem Beispiel heißt die Datei US-East1.pem und ist im Verzeichnis ../opsworks/ec2_keys gespeichert.

Region

(Erforderlich) Die AWS-Region der Instance. Im Beispiel wird USA West (Nordkalifornien) verwendet, das durch dargestellt wirdus-west-1.

availability_zone

(Optional) Die Availability Zone (AZ) der Instance. Wenn Sie diese Einstellung weglassen, verwendet Test Bol eine Standard-Availability Zone für die angegebene Region, die us-west-1b für USA West (Nordkalifornien) bestimmt ist. Möglicherweise ist diese Standard-AZ für Ihr Konto nicht verfügbar. In dem Fall müssen Sie explizit eine Availability Zone angeben. Das für diese Beispiele verwendete Konto unterstützt us-west-1b nicht, daher wird us-west-1c im Beispiel explizit angegeben.

require_chef_omnibus

Mit dem Wert true stellt diese Einstellung sicher, dass das Omnibus-Installationsprogramm für die Installation von chef-client auf allen Plattform-Instances verwendet wird.

security_group_ids

(Optional) Eine Liste mit Sicherheitsgruppen-IDs, die für die Instance gelten. Mit dieser Einstellung wird die Sicherheitsgruppe default für die Instance verwendet. Stellen Sie sicher, dass die für den Dateneingang festgelegten Regeln der Sicherheitsgruppe eingehende SSH-Verbindungen zulassen. Andernfalls kann Test Kitchen nicht mit der Instance kommunizieren. Wenn Sie die Sicherheitsgruppe default nutzen, müssen Sie diese möglicherweise entsprechend anpassen. Weitere Informationen finden Sie unter Amazon EC2-Sicherheitsgruppen.

subnet_id

Die ID des Ziel-Subnetzes für die Instance (falls zutreffend).

associate_public_ip

Sie können Amazon EC2 eine öffentliche IP-Adresse mit der Instance verknüpfen lassen, wenn Sie über das Internet auf die Instance zugreifen möchten.

interface

Der Konfigurationstyp des Host-Namens, der für den Zugriff auf die Instance verwendet wird. Gültige Werte sind dns, public, private oder private_dns. Falls Sie keinen Wert für dieses Attribut angeben, wird die Host-Namenskonfiguration von kitchen-ec2 in folgender Reihenfolge eingerichtet. Wenn Sie dieses Attribut weglassen, wird kein Konfigurationstyp festgelegt.

  1. DNS-Name

  2. Öffentliche IP-Adresse

  3. Private IP-Adresse

  4. Private DNS name (Privater DNS-Name)

Wichtig

Anstatt Ihre -Kontoanmeldeinformationen für den Zugriff und die geheimen Schlüssel zu verwenden, sollten Sie einen Benutzer erstellen und diese Anmeldeinformationen für TestSpeed bereitstellen. Weitere Informationen finden Sie unter Bewährte Methoden für die Verwaltung von AWS-Zugriffsschlüsseln.

Achten Sie darauf, keinen öffentlich .kitchen.yml zugänglichen Ort zu verwenden, z. B. in ein öffentliches GitHub oder Bitbucket-Repository hochzuladen. Dadurch könnten Ihre Anmeldeinformationen offengelegt und die Sicherheit Ihres Kontos beeinträchtigt werden.

Der kitchen-ec2-Treiber unterstützt standardmäßig die folgenden Plattformen:

  • ubuntu-10.04

  • ubuntu-12.04

  • ubuntu-12.10

  • ubuntu-13.04

  • ubuntu-13.10

  • ubuntu-14.04

  • centos-6.4

  • debian-7.1.0

  • windows-2012r2

  • windows-2008r2

Wenn Sie eine oder mehrere dieser Plattformen verwenden möchten, fügen Sie zu platforms die entsprechenden Plattformnamen hinzu. Der kitchen-ec2-Treiber wählt automatisch ein geeignetes AMI aus und generiert einen SSH-Benutzernamen. Sie können andere Plattformen verwenden – in diesem Beispiel wird Amazon Linux verwendet – aber Sie müssen die folgenden platforms Attribute explizit angeben.

Name

Der Name der Plattform. In diesem Beispiel wird Amazon Linux verwendet, folglich ist name auf amazon gesetzt.

driver

Die driver-Attribute, zu denen die nachfolgenden zählen:

  • image_id – Das AMI der Plattform, das zur angegebenen Region gehören muss. Das Beispiel verwendet ami-ed8e9284, ein Amazon Linux AMI aus der Region USA West (Nordkalifornien).

  • transport.username – Der SSH-Benutzername, den Test Bol für die Kommunikation mit der Instance verwendet.

    Verwenden Sie ec2-user für Amazon Linux. Für andere AMIs werden ggf. andere Benutzernamen herangezogen.

Ersetzen Sie den Code in .kitchen.yml durch das Beispiel und weisen Sie den kontobezogenen Attributen (wie aws_access_key_id) entsprechende Werte zu.

Ausführen des Rezepts

Im Beispiel wird das Rezept aus Iteration verwendet.

So führen Sie das Rezept aus
  1. Erstellen Sie die Datei default.rb mit folgendem Code und speichern Sie diese im Rezeptbuch-Ordner recipes.

    directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
  2. Führen Sie kitchen converge aus, um das Rezept auszuführen. Beachten Sie, dass die Ausführung dieses Befehls aufgrund der Zeit, die zum Starten und Initialisieren einer Amazon EC2Instance benötigt wird, länger dauert als in den vorherigen Beispielen.

  3. Gehen Sie zur Amazon EC2-Konsole , wählen Sie die Region USA West (Nordkalifornien) aus und klicken Sie im Navigationsbereich auf Instances. Die neu erstellte Instance wird in der Liste angezeigt.

  4. Führen Sie auskitchen login, um sich bei der Instance anzumelden, genau wie bei Instances, die in ausgeführt werden VirtualBox. Die neu erstellten Verzeichnisse werden unter /srv angezeigt. Für die Verbindung zur Instance können Sie auch Ihren bevorzugten SSH-Client nutzen.