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

Wichtig

Das Tool AWS OpsWorks Stacks Der Service hat am 26. Mai 2024 das Ende seiner Nutzungsdauer 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.

Bis zu diesem Zeitpunkt haben Sie Instanzen lokal ausgeführt in VirtualBox. Dies ist zwar schnell und einfach, aber Sie werden Ihre Rezepte irgendwann auf einer EC2 Amazon-Instanz testen wollen. Insbesondere wenn Sie Rezepte auf Amazon Linux ausführen möchten, ist dies nur bei Amazon verfügbarEC2. Sie können ein ähnliches System wie CentOS für die vorläufige Implementierung und das Testen verwenden, aber die einzige Möglichkeit, Ihre Rezepte auf Amazon Linux vollständig zu testen, ist eine EC2 Amazon-Instance.

In diesem Thema wird gezeigt, wie Rezepte auf einer EC2 Amazon-Instance 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 Kochbuchs muss mit den Informationen konfiguriert werden, die zum Starten der EC2 Amazon-Instance erforderlich sind.

Anmerkung

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

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

Melde dich an für ein AWS-Konto

Wenn Sie kein haben AWS-Konto, führen Sie die folgenden Schritte aus, um einen zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  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 eine anmelden AWS-Konto, ein Root-Benutzer des AWS-Kontoswird erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen im Konto. 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 nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Du kannst jederzeit deine aktuellen Kontoaktivitäten einsehen und dein Konto verwalten, indem du zu https://aws.amazon.com/gehst und Mein Konto auswählst.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie sich Ihre Root-Benutzer des AWS-Kontos, aktivieren AWS IAM Identity Center, und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich an bei der AWS Management Consoleals Kontoinhaber wählen Sie Root-Benutzer und geben Sie Ihren AWS-Konto E-Mail-Adresse. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Als Root-Benutzer anmelden im AWS-Anmeldung Benutzerleitfaden.

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

    Anweisungen finden Sie unter Aktivieren Sie ein virtuelles MFA Gerät für Ihren AWS-Konto Root-Benutzer (Konsole) im IAMBenutzerhandbuch.

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center in der AWS IAM Identity Center Benutzerleitfaden.

  2. Gewähren Sie einem Benutzer in IAM Identity Center Administratorzugriff.

    Für ein Tutorial zur Verwendung des IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie unter Benutzerzugriff mit der Standardeinstellung konfigurieren IAM-Identity-Center-Verzeichnis in der AWS IAM Identity Center Benutzerleitfaden.

Anmelden als Administratorbenutzer
  • Um sich mit Ihrem IAM Identity Center-Benutzer anzumelden, verwenden Sie die Anmeldung, 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 bei AWS Zugriffsportal im AWS-Anmeldung Benutzerleitfaden.

Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie in IAM Identity Center einen Berechtigungssatz, der der bewährten Methode zur Anwendung von Berechtigungen mit den geringsten Rechten folgt.

    Anweisungen finden Sie unter Einen Berechtigungssatz erstellen in der AWS IAM Identity Center Benutzerleitfaden.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Anweisungen finden Sie unter Gruppen hinzufügen in der AWS IAM Identity Center Benutzerleitfaden.

Sie sollten einen IAM Benutzer mit Berechtigungen für den Zugriff auf Amazon erstellen EC2 und die Zugriffs- und Geheimschlüssel des Benutzers an einem sicheren Ort auf Ihrer Workstation speichern. 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

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

  • AWS_ACCESS_ KEY — der Zugriffsschlüssel Ihres Benutzers, der ungefähr so AKIAIOSFODNN7EXAMPLE aussehen wird.

  • AWS_SECRET_ KEY — der geheime Schlüssel Ihres Benutzers, der ungefähr so aussehen wird wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.

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 ist für diesen Befehl möglicherweise ein Ruby-Umgebungsmanager erforderlichsudo, oder Sie können auch einen Ruby-Umgebungsmanager wie verwenden 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 EC2 SSH Amazon-Schlüsselpaar angeben, das Test Kitchen verwenden kann, um eine Verbindung mit der Instance herzustellen. Wenn Sie kein EC2 Amazon-Schlüsselpaar haben, finden Sie unter EC2Amazon-Schlüsselpaare Informationen darüber, wie Sie eines erstellen können. Beachten Sie, dass das key pair zu derselben AWS Region gehören muss wie die Instance. Das Beispiel verwendet US 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 die Konfiguration beschrieben.kitchen.yml, die für EC2 Amazon-Instances erheblich komplizierter ist.

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

.kitchen.yml für Amazon konfigurieren EC2

Sie konfigurieren .kitchen.yml mit den Informationen, die der kitchen-ec2 Treiber benötigt, um eine entsprechend konfigurierte EC2 Amazon-Instance zu starten. Im Folgenden finden Sie ein Beispiel für eine .kitchen.yml Datei 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 EC2 SSH Amazon-Schlüsselpaarname, 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. Das Beispiel verwendet US West (Nordkalifornien), dargestellt durchus-west-1).

availability_zone

(Optional) Die Availability Zone (AZ) der Instance. Wenn Sie diese Einstellung weglassen, verwendet Test Kitchen eine standardmäßige Availability Zone für die angegebene Region, die us-west-1b für USA West (Nordkalifornien) gilt. 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 der Sicherheitsgruppen, die IDs auf die Instance angewendet werden sollen. Mit dieser Einstellung wird die Sicherheitsgruppe default für die Instance verwendet. Stellen Sie sicher, dass die Eingangsregeln 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 Security Groups.

subnet_id

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

associate_public_ip

Sie können Amazon der Instance eine öffentliche IP-Adresse EC2 zuordnen 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. DNSName

  2. Öffentliche IP-Adresse

  3. Private IP-Adresse

  4. 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 an Test Kitchen weitergeben. Weitere Informationen finden Sie unter Bewährte Methoden für die Verwaltung von AWS Zugriffsschlüsseln.

Achte darauf, dass du es nicht .kitchen.yml an einem öffentlich zugänglichen Ort ablegst, z. B. wenn du es in ein öffentliches Repository GitHub oder ein Bitbucket-Repository hochlädst. 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 einen geeigneten aus AMI und generiert einen SSH Benutzernamen. Sie können andere Plattformen verwenden — in diesem Beispiel wird Amazon Linux verwendet —, aber Sie müssen die folgenden Attribute explizit angeben. platforms

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— Die PlattformAMI, die 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 Kitchen für die Kommunikation mit der Instance verwenden wird.

    Verwenden Sie ec2-user für Amazon Linux. Andere haben AMIs möglicherweise andere Benutzernamen.

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 EC2 Amazon-Instance benötigt wird, länger dauert als bei den vorherigen Beispielen.

  3. Gehen Sie zur EC2Amazon-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 kitchen login den Befehl aus, um sich bei der Instance anzumelden, genau wie Sie es bei Instances getan haben, die in der Instance laufen VirtualBox. Die neu erstellten Verzeichnisse werden unter /srv angezeigt. Sie können auch Ihren SSH Lieblingsclient verwenden, um eine Verbindung zur Instanz herzustellen.