Verwenden von benutzerdefinierten AMIs - 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 von benutzerdefinierten AMIs

Wichtig

Der AWS OpsWorks Stacks Service 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.

AWS OpsWorks Stacks unterstützt zwei Möglichkeiten zur Anpassung von Instances: benutzerdefinierte Amazon Machine Images (AMIs) und Chef-Rezepte. Mit beiden Ansätzen haben Sie die Kontrolle darüber, welche Pakete und Paketversionen installiert werden, wie diese konfiguriert werden usw. Jeder der beiden Ansätze bietet jedoch eigene Vorteile und die Wahl des richtigen Ansatzes hängt von Ihren Anforderungen ab.

Nachfolgend finden Sie die Hauptgründe für die Verwendung eines benutzerdefinierten AMIs:

  • Sie möchten bestimmte Pakete vorab zusammenstellen, statt sie nach dem Hochfahren der Instance zu installieren.

  • Sie möchten den Zeitpunkt von Paketaktualisierungen kontrollieren, um ein konsistentes Basisabbild für Ihren Layer bereitzustellen.

  • Sie möchten Instances, insbesondere lastbasierte Instances so schnell wie möglich hochfahren.

Nachfolgend finden Sie die Hauptgründe für die Verwendung von Chef-Rezepten:

  • Sie sind flexibler als benutzerdefinierte AMIs.

  • Sie lassen sich einfacher aktualisieren.

  • Sie können Online-Instances aktualisieren.

In der Praxis ist die optimale Lösung möglicherweise eine Kombination aus beiden Ansätzen. Weitere Informationen zu Rezepten finden Sie unter Cookbooks und Rezepte.

So funktionieren benutzerdefinierte AMIs mit Stacks AWS OpsWorks

Um ein benutzerdefiniertes AMI für Ihre Instances anzugeben, wählen Sie Benutzerdefiniertes AMI als Betriebssystem der Instance verwenden, wenn Sie eine neue Instance erstellen. AWS OpsWorks Stacks zeigt dann eine Liste der benutzerdefinierten AMIs in der Region des Stacks an, und Sie wählen die entsprechende AMIs aus der Liste aus. Weitere Informationen finden Sie unter Hinzufügen einer Instance zu einem Layer.

Anmerkung

Sie können kein bestimmtes benutzerdefiniertes AMI als Standardbetriebssystem eines Stacks festlegen. Sie können Use custom AMI als Standardbetriebssystem des Stacks festlegen, es ist jedoch nur beim Hinzufügen neuer Instances zu einem Layer möglich, ein bestimmtes AMI auszuwählen. Weitere Informationen finden Sie unter Hinzufügen einer Instance zu einem Layer und Erstellen eines neuen Stacks. Es ist zwar möglich, Instances mit anderen Betriebssystemen (z. B. CentOS 6.x) zu erstellen, die mithilfe von benutzerdefinierten oder in der Community generierten AMIs erstellt wurden, offiziell werden diese Betriebssysteme jedoch nicht unterstützt.

In diesem Thema werden einige allgemeine Probleme angesprochen, die Sie vor dem Erstellen oder Verwenden von benutzerdefinierten AMIs berücksichtigen sollten.

Verhalten beim Hochfahren

Wenn Sie die Instance starten, verwendet AWS OpsWorks Stacks das angegebene benutzerdefinierte AMI, um eine neue Amazon EC2 EC2-Instance zu starten. AWS OpsWorks Stacks verwendet dann cloud-init, um den AWS OpsWorks Stacks-Agenten auf der Instance zu installieren, und der Agent führt die Setup-Rezepte der Instance aus, gefolgt von den Deploy-Rezepten. Nachdem die Instance online ist, führt der Agent die Konfigurationsrezepte für jede Instance im Stack einschließlich der neu hinzugefügten Instance aus.

Auswählen eines Layers

Der AWS OpsWorks Stacks-Agent steht normalerweise nicht in Konflikt mit installierten Paketen. Die Instanz muss jedoch mindestens einer Ebene angehören. AWS OpsWorks Stacks führt immer die Rezepte dieser Ebene aus, was zu Problemen führen kann. Sie müssen genau verstehen, was die Rezepte eines Layers auf einer Instance tun, bevor Sie diesem Layer eine Instance mit einem benutzerdefinierten AMI hinzufügen.

Um zu prüfen, welche Rezepte ein bestimmter Layer-Typ auf Ihrer Instance ausführt, öffnen Sie einen Stack, der diesen Layer enthält. Klicken Sie dann im Navigationsbereich auf Layers und anschließend auf Recipes für den gewünschten Layer. Klicken Sie auf den Rezeptnamen, um den eigentlichen Code anzuzeigen.

Anmerkung

Bei Linux-AMIs besteht eine Möglichkeit, die Wahrscheinlichkeit von Konflikten zu verringern, darin, AWS OpsWorks Stacks zur Bereitstellung und Konfiguration der Instance zu verwenden, die die Grundlage für Ihr benutzerdefiniertes AMI bildet. Weitere Informationen finden Sie unter Erstellen Sie ein benutzerdefiniertes Linux-AMI aus einer AWS OpsWorks Stacks-Instance.

Umgang mit Anwendungen

Neben Paketen möchten Sie möglicherweise auch eine Anwendung in das AMI aufnehmen. Bei großen, komplexen Anwendungen kann sich die Zeit zum Hochfahren der Instance verkürzen, wenn Sie die Anwendung in das AMI aufnehmen. Sie können kleine Anwendungen in Ihr AMI aufnehmen, aber im Vergleich zur Bereitstellung der Anwendung durch AWS OpsWorks Stacks bietet das Bereitstellen der Anwendung in der Regel nur einen geringen oder gar keinen Zeitvorteil.

Eine Möglichkeit besteht darin, die Anwendung in Ihr AMI aufzunehmen und zusätzlich eine App zu erstellen, die die Anwendung über ein Repository auf den Instances bereitstellt. So lässt sich nicht nur die Startzeit verkürzen, es ist auch eine praktische Möglichkeit, die Anwendung nach dem Start der Instance zu aktualisieren. Beachten Sie, dass Chef-Rezepte idempotent sind. Bereitstellungsrezepte nehmen daher keine Änderungen an der Anwendung vor, solange die Version im Repository mit der auf der Instance übereinstimmt.

Ein benutzerdefiniertes AMI für AWS OpsWorks Stacks erstellen

Um ein benutzerdefiniertes AMI mit AWS OpsWorks Stacks zu verwenden, müssen Sie zunächst ein AMI aus einer benutzerdefinierten Instance erstellen. Sie können aus zwei Optionen wählen:

  • Verwenden Sie die Amazon EC2 EC2-Konsole oder API, um eine Instance zu erstellen und anzupassen, die auf einer 64-Bit-Version eines der von AWS OpsWorks Stacks unterstützten AMIs basiert.

  • Verwenden Sie für Linux-AMIs, OpsWorks um eine Amazon EC2 EC2-Instance auf der Grundlage der Konfiguration der zugehörigen Ebenen zu erstellen.

Bevor Sie ein benutzerdefiniertes Linux-AMI erstellen, deaktivieren Sie es noexec auf der /tmp Partition, damit AWS OpsWorks Stacks seinen Agenten auf benutzerdefinierten Linux-Instances installieren kann.

Anmerkung

Ein AMI funktioniert möglicherweise nicht auf allen Instance-Typen. Sie sollten daher sicherstellen, dass Ihr AMI mit den zu verwendenden Instance-Typen kompatibel ist. Insbesondere die R3-Instance-Typen benötigen ein AMI mit hardwaregestützter Virtualisierung.

Anschließend verwenden Sie die Amazon EC2 EC2-Konsole oder API, um aus der benutzerdefinierten Instance ein benutzerdefiniertes AMI zu erstellen. Sie können benutzerdefinierte AMIs in allen Stacks in derselben Region verwenden. Fügen Sie dazu einem Layer eine Instance hinzu und legen Sie Ihr benutzerdefiniertes AMI fest. Weitere Informationen dazu, wie Sie eine Instance erstellen, die ein benutzerdefiniertes AMI verwendet, finden Sie unter Hinzufügen einer Instance zu einem Layer.

Anmerkung

Standardmäßig installiert AWS OpsWorks Stacks alle Amazon Linux-Updates beim Booten, sodass Sie die neueste Version erhalten. Außerdem erscheint etwa alle sechs Monate eine neue Amazon Linux-Version, die unter Umständen wichtige Änderungen enthält. Standardmäßig werden auf Amazon Linux basierte benutzerdefinierte AMIs automatisch auf die aktuelle Version aktualisiert, sobald diese veröffentlicht wurde. Es empfiehlt sich, Ihr benutzerdefiniertes AMI auf eine bestimmte Amazon Linux-Version zu beschränken. So können Sie Aktualisierungen zunächst testen, bevor Sie die neue Version verwenden. Weitere Informationen finden Sie unter Wie beschränke ich ein AMI auf eine bestimmte Version?.

Erstellen Sie ein benutzerdefiniertes AMI mit Amazon EC2

Die einfachste Methode, ein benutzerdefiniertes AMI zu erstellen — und die einzige Option für Windows-AMIs — besteht darin, die gesamte Aufgabe mithilfe der Amazon EC2 EC2-Konsole oder API auszuführen. Weitere Informationen zu den folgenden Schritten finden Sie unter Erstellen eigener AMIs.

Um ein benutzerdefiniertes AMI mit der Amazon EC2 EC2-Konsole oder API zu erstellen
  1. Erstellen Sie eine Instance auf Basis einer 64-Bit-Version eines von AWS OpsWorks  Stacks unterstützten AMIs.

  2. Passen Sie die Instance aus Schritt 1 an, indem Sie sie konfigurieren, Pakete installieren usw. Alles, was Sie installieren, wird auf sämtlichen auf diesem AMI basierenden Instances nachgebildet. Installieren Sie daher nichts, was nur auf dieser Instance laufen soll.

  3. Halten Sie die Instance an und erstellen Sie ein benutzerdefiniertes AMI.

Erstellen Sie ein benutzerdefiniertes Linux-AMI aus einer AWS OpsWorks Stacks-Instance

Um eine benutzerdefinierte AWS OpsWorks Stacks Linux-Instance zur Erstellung eines AMI zu verwenden, beachten Sie, dass jede von erstellte Amazon EC2 EC2-Instance eine eindeutige Identität OpsWorks enthält. Wenn Sie aus einer solchen Instance ein benutzerdefiniertes AMI erstellen, enthält es diese Identität, und alle auf dem AMI basierenden Instances haben dieselbe Identität. Damit jede auf Ihrem benutzerdefinierten AMI basierende Instance eine eindeutige Identität hat, müssen Sie die Identität vor dem Erstellen des AMIs aus der angepassten Instance entfernen.

So erstellen Sie ein benutzerdefiniertes AMI aus einer AWS OpsWorks Stacks-Instance
  1. Erstellen Sie einen Linux-Stack und fügen Sie mindestens einen Layer hinzu, um die Konfiguration der angepassten Instance festzulegen. Sie können sowohl integrierte Layers an Ihre Bedürfnisse anpassen als auch völlig eigene Layers verwenden. Weitere Informationen finden Sie unter Stacks anpassen AWS OpsWorks.

  2. Bearbeiten Sie die Ebenen und deaktivieren Sie AutoHealing sie.

  3. Fügen Sie den Layers eine Instance mit Ihrer bevorzugten Linux-Distribution hinzu und starten Sie sie. Wir empfehlen die Verwendung einer Amazon EBS-gestützten Instance. Öffnen Sie die Detailseite der Instance und notieren Sie sich ihre Amazon EC2 EC2-ID für später.

  4. Nachdem die Instance online ist, melden Sie sich mit SSH an und führen abhängig vom Betriebssystem Ihrer Instance einen der nächsten vier Schritte aus.

  5. Für eine Amazon Linux-Instance in einem Chef 11- oder Chef 12-Stack oder eine Red Hat Enterprise Linux 7-Instance in einem Chef 11-Stack gehen Sie wie folgt vor.

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef

      Anmerkung

      Fügen Sie für Instances in einem Chef 12-Stack die folgenden beiden Verzeichnisse zu diesem Befehl hinzu:

      • /var/chef

      • /opt/chef

    4. sudo rpm -e opsworks-agent-ruby

    5. sudo rpm -e chef

  6. Bei einer Ubuntu 16.04 oder 18.04 LTS-Instance in einem Chef 12-Stack gehen Sie wie folgt vor.

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    3. sudo apt-get -y remove chef

    4. sudo dpkg -r opsworks-agent-ruby

    5. systemctl stop apt-daily.timer

    6. systemctl stop apt-daily-upgrade.timer

    7. rm /var/lib/systemd/timers/stamp-apt-daily.timer

    8. rm /var/lib/systemd/timers/stamp-apt-daily-upgrade.timer

  7. Für andere unterstützte Ubuntu-Versionen in einem Chef 12-Stack gehen Sie wie folgt vor.

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    4. sudo apt-get -y remove chef

    5. sudo dpkg -r opsworks-agent-ruby

  8. Für eine Red Hat Enterprise Linux 7-Instance in einem Chef 12-Stack gehen Sie wie folgt vor.

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef /var/chef

    3. sudo rpm -e opsworks-agent-ruby

    4. sudo rpm -e chef

  9. Dieser Schritt ist abhängig vom Instance-Typ:

    • Verwenden Sie für eine Amazon EBS-gestützte Instance die AWS OpsWorks Stacks-Konsole, um die Instance zu beenden und das AMI zu erstellen, wie unter Erstellen eines Amazon EBS-gestützten Linux-AMI beschrieben.

    • Erstellen Sie für eine Instance Store-Backed Instance das AMI wie unter Erstellen eines Instance Store-Backed Linux AMI beschrieben und beenden Sie die Instance dann mit der AWS OpsWorks Stacks-Konsole.

      Fügen Sie beim Erstellen des AMIs unbedingt auch die Zertifikatdateien ein. Rufen Sie beispielsweise den Befehl ec2-bundle-vol mit dem Argument -i mit den Optionen -i $(find /etc /usr /opt -name '*.pem' -o -name '*.crt' -o -name '*.gpg' | tr '\n' ',') auf. Entfernen Sie beim Bündeln nicht die öffentlichen Schlüssel. Diese Aufgabe erledigen Sie mit dem Standardbefehl ec2-bundle-vol.

  10. Bereinigen Sie Ihren Stack, indem Sie zur AWS OpsWorks Stacks-Konsole zurückkehren und die Instance aus dem Stack löschen.

Erstellen eines benutzerdefinierten Windows-Amazon-Computerabbilds (AMI)

Mit den folgenden Verfahren werden benutzerdefinierte AMIs für Windows Server 2022 Base erstellt. In der Amazon EC2-Managementkonsole können Sie andere Windows Server-Betriebssysteme auswählen.

Wichtig

Derzeit kann der AWS OpsWorks Stacks-Agent nicht auf Windows-basierten Instances installiert werden, die eine andere Sprache der Systembenutzeroberfläche als Englisch — USA (en-US) verwenden — und AWS OpsWorks Stacks kann diese auch nicht verwalten.

Erstellen eines benutzerdefinierten Windows-AMIs mit Sysprep

Ein mit Sysprep erstelltes benutzerdefiniertes Windows-AMI führt zwar in der Regel zu einem langsameren Startprozess der Instance, ist allgemein jedoch sauberer. Der erstmalige Start einer Instanz, die aus einem mit erstellten Image erstellt wurde, Sysprep nimmt aufgrund von Sysprep Aktivitäten, Neustarts, der AWS OpsWorks Stacks-Bereitstellung und der ersten Ausführung von Stacks, einschließlich Einrichtung und Konfiguration, mehr Zeit in Anspruch. AWS OpsWorks Führen Sie die Schritte zur Erstellung eines benutzerdefinierten Windows-AMI in der Amazon EC2 EC2-Konsole aus.

So erstellen Sie ein benutzerdefiniertes Windows-AMI mit Sysprep:
  1. Wählen Sie in der Amazon-EC2-Konsole Instance starten aus.

  2. Suchen Sie nach Microsoft Windows Server 2022 Base, und wählen Sie dann Auswählen aus.

  3. Wählen Sie den gewünschten Instance-Typ aus und wählen Sie dann Next: Configure Instance Details aus. Passen Sie die Konfiguration des AMIs einschließlich Computername, Speicher- und Sicherheitsgruppeneinstellungen an. Wählen Sie Launch (Starten) aus.

  4. Nachdem der Startprozess der Instance abgeschlossen ist, rufen Sie Ihr Passwort ab und melden Sie sich in einem Remote Desktop Connection-Fenster von Windows bei der Instance an.

  5. Wählen Sie auf dem Windows-Startbildschirm Start und beginnen Sie dann mit der Eingabe, ec2configservice bis die Ergebnisse in der ConfigServiceSettingsEC2-Konsole angezeigt werden. Öffnen Sie die -Konsole.

  6. Vergewissern Sie sich, dass auf der Registerkarte Allgemein das Kontrollkästchen UserData Ausführung aktivieren aktiviert ist (diese Option ist zwar nicht erforderlich fürSysprep, aber erforderlich, damit AWS OpsWorks Stacks seinen Agenten installiert). Deaktivieren Sie das Kontrollkästchen für die Option Set the computer name of the instance... (Computername der Instance einrichten), da diese Option zu einer Neustartschleife von AWS OpsWorks Stacks führen kann.

  7. Legen Sie auf der Registerkarte Image das Administratorkennwort entweder auf Random fest, damit Amazon EC2 automatisch ein Passwort generieren kann, das Sie mit einem SSH-Schlüssel abrufen können, oder auf Specify, um Ihr eigenes Passwort anzugeben. Sysprepspeichert diese Einstellung. Wenn Sie ein eigenes Passwort festlegen, speichern Sie sich dieses Passwort ab. Wir empfehlen Ihnen, Keep Existing nicht auszuwählen.

  8. Wählen Sie Apply und anschließend Shutdown with Sysprep aus. Wenn Sie aufgefordert werden, Ihre Entscheidung zu bestätigen, wählen Sie Yes aus.

  9. Nachdem die Instance gestoppt wurde, klicken Sie in der Amazon EC2 EC2-Konsole mit der rechten Maustaste auf die Instance in der Instance-Liste, wählen Sie Image und dann Create Image.

  10. Geben Sie auf der Seite Create Image einen Namen und eine Beschreibung für das Abbild ein und legen Sie die Volume-Konfiguration fest. Wählen Sie Create Image aus, wenn Sie fertig sind.

  11. Öffnen Sie die Seite Images und warten Sie, bis der Status des Abbilds von pending zu available wechselt. Das neue AMI ist nun einsatzbereit.

Erstellen eines benutzerdefinierten Windows-AMIs ohne Sysprep

Führen Sie die Schritte zur Erstellung eines benutzerdefinierten Windows-AMI in der Amazon EC2 EC2-Konsole aus.

So erstellen Sie ein benutzerdefiniertes Windows-AMI ohne Sysprep
  1. Wählen Sie in der Amazon-EC2-Konsole Instance starten aus.

  2. Suchen Sie nach Microsoft Windows Server 2022 Base, und wählen Sie dann Auswählen aus.

  3. Wählen Sie den gewünschten Instance-Typ aus und wählen Sie dann Next: Configure Instance Details aus. Passen Sie die Konfiguration des AMIs einschließlich Computername, Speicher- und Sicherheitsgruppeneinstellungen an. Wählen Sie Launch (Starten) aus.

  4. Nachdem der Startprozess der Instance abgeschlossen ist, rufen Sie Ihr Passwort ab und melden Sie sich in einem Remote Desktop Connection-Fenster von Windows bei der Instance an.

  5. Öffnen Sie auf der Instance C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml, ändern Sie die folgenden beiden Einstellungen und speichern und schließen Sie dann die Datei:

    • Ec2SetPassword auf Enabled

    • Ec2HandleUserData auf Enabled

  6. Trennen Sie die Verbindung zur Remote Desktop-Sitzung und kehren Sie zur Amazon EC2 EC2-Konsole zurück.

  7. Halten Sie in der Liste Instances die Instance an.

  8. Nachdem die Instance gestoppt wurde, klicken Sie in der Amazon EC2 EC2-Konsole mit der rechten Maustaste auf die Instance in der Instance-Liste, wählen Sie Image und dann Create Image.

  9. Geben Sie auf der Seite Create Image einen Namen und eine Beschreibung für das Abbild ein und legen Sie die Volume-Konfiguration fest. Wählen Sie Create Image aus, wenn Sie fertig sind.

  10. Öffnen Sie die Seite Images und warten Sie, bis der Status des Abbilds von pending zu available wechselt. Das neue AMI ist nun einsatzbereit.

Hinzufügen einer neuen Instance mithilfe eines benutzerdefinierten Windows-AMIs

Nachdem Ihr Abbild den Status available anzeigt, können Sie basierend auf Ihrem benutzerdefinierten Windows-AMI neue Instances erstellen. Wenn Sie Use custom Windows AMI aus der Liste Operating system auswählen, zeigt AWS OpsWorks  Stacks eine Liste benutzerdefinierter AMIs an.

So fügen Sie eine neue Instance basierend auf einem benutzerdefinierten Windows-AMI hinzu
  1. Wenn Ihr neues AMI verfügbar ist, gehen Sie zur AWS OpsWorks Stacks-Konsole, öffnen Sie die Instance-Seite für einen Windows-Stack und wählen Sie unten auf der Seite + Instance aus, um eine neue Instance hinzuzufügen.

  2. Wählen Sie auf der Registerkarte New (Neu) die Option Advanced (Erweitert) aus.

  3. Wählen Sie in der Dropdown-Liste Operating system die Option Use custom Windows AMI aus.

  4. Wählen Sie in der Dropdown-Liste Custom AMI das erstellte AMI und anschließend Add Instance aus.

Sie können die Instance jetzt starten und ausführen.