Aktualisierung von AMIs mithilfe von Automation und Jenkins - AWS Systems Manager

AWS Systems ManagerChange Managersteht neuen Kunden nicht mehr offen. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter Änderung der AWS Systems ManagerChange Manager Verfügbarkeit.

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.

Aktualisierung von AMIs mithilfe von Automation und Jenkins

Wenn Ihr Unternehmen Jenkins Software in einer CI/CD Pipeline verwendet, können Sie Automatisierung als Post-Build-Schritt hinzufügen, um Anwendungsversionen in Amazon Machine Images () vorzuinstallieren. AMIs Automation ist ein Tool in AWS Systems Manager. Sie können auch die Jenkins-Funktion zum Planen verwenden, um Automation aufzurufen, und Ihr eigenes Patchingintervall für das Betriebssystem erstellen.

Das folgende Beispiel zeigt, wie Automation von einem Jenkins Server aus aufgerufen wird, der entweder vor Ort oder in Amazon Elastic Compute Cloud (Amazon EC2) läuft. Für die Authentifizierung verwendet der Jenkins Server AWS Anmeldeinformationen, die auf einer IAM-Richtlinie basieren, die Sie im Beispiel erstellen und an Ihr Instance-Profil anhängen.

Anmerkung

Befolgen Sie beim Konfigurieren Ihrer Instance die bewährten Methoden von Jenkins für die Sicherheit.

Bevor Sie beginnen

Schließen Sie die folgenden Aufgaben ab, bevor Sie Automation mit Jenkins konfigurieren:

So erstellen Sie eine IAM-Richtlinie für den Jenkins-Server
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die IAM-Konsole unter. https://console.aws.amazon.com/iam/

  2. Wählen Sie im Navigationsbereich Richtlinien und dann Richtlinie erstellen.

  3. Wählen Sie den Tab JSON.

  4. Ersetzen Sie jeden example resource placeholder durch Ihre Informationen.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:us-east-1:111122223333:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:us-east-1:111122223333:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. Wählen Sie Richtlinie prüfen.

  6. Geben Sie auf der Seite Richtlinie prüfen im Feld Name einen Namen für die Inline-Richtlinie ein, z. B. JenkinsPolicy.

  7. Wählen Sie Richtlinie erstellen aus.

  8. Wählen Sie im Navigationsbereich Rollen.

  9. Wählen Sie das Instance-Profil aus, das Ihrem Jenkins-Server angefügt ist.

  10. Wählen Sie auf der Registerkarte Berechtigungen die Option Berechtigungen hinzufügen, Richtlinien anfügen.

  11. Geben Sie im Abschnitt Andere Berechtigungsrichtlinien den Namen der Richtlinie ein, die Sie in den vorherigen Schritten erstellt haben. Beispiel, JenkinsPolicy.

  12. Aktivieren Sie das Kontrollkästchen neben Ihrer Richtlinie, und wählen Sie Richtlinien anfügen aus.

Gehen Sie wie folgt vor, um das AWS CLI auf Ihrem Jenkins Server zu konfigurieren.

So konfigurieren Sie den Jenkins-Server für Automation
  1. Verbinden Sie sich mit Ihrem Jenkins-Server auf Port 8080 über Ihren bevorzugten Browser, um auf die Verwaltungsschnittstelle zuzugreifen.

  2. Geben Sie das Passwort ein, welches Sie unter /var/lib/jenkins/secrets/initialAdminPassword finden. Um Ihr Kennwort anzuzeigen, führen Sie den folgenden Befehl aus.

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. Das Jenkins-Installationsskript leitet Sie zur Seite Anpassen von Jenkins weiter. Wählen Sie Installieren von empfohlenen Plugins.

  4. Nach abgeschlossener Installation wählen Sie Administrator-Zugangsdaten, wählen Sie dann Zugansdaten speichern und klicken Sie dann auf Verwendung von Jenkins beginnen aus.

  5. Wählen Sie im linken Navigationsbereich Jenkins verwalten und dann Plugins verwalten.

  6. Wählen Sie die Registerkarte Available (Verfügbar) und geben Sie dann Amazon EC2 plugin ein.

  7. Aktivieren Sie das Kontrollkästchen für Amazon EC2 plugin und klicken Sie dann auf Installation ohne Neustart.

  8. Nach abgeschlossener Installation wählen Sie Zurück zur oberen Seite.

  9. Wählen Sie Jenkins verwalten und anschließend Knoten und Clouds verwalten aus.

  10. Wählen Sie im Abschnitt Clouds konfigurieren die Option Neue Cloud hinzufügen und dann Amazon aus EC2.

  11. Geben Sie Ihre Daten in die verbleibenden Felder ein. Stellen Sie sicher, dass Sie die Option EC2 Instanzprofil verwenden, um Anmeldeinformationen zu erhalten ausgewählt haben.

Führen Sie die folgenden Schritte zum Konfigurieren Ihres Jenkins-Projekts aus, um Automation zu konfigurieren.

So konfigurieren Sie Ihren Jenkins-Server zum Aufrufen von Automation
  1. Öffnen Sie die Jenkins-Konsole in einem Webbrowser.

  2. Wählen Sie das Projekt, das Sie mit Automation konfigurieren möchten, und wählen Sie dann Configure (Konfigurieren).

  3. Wählen Sie auf der Registerkarte Build Add Build Step (Build-Schritt hinzufügen) aus.

  4. Wählen Sie je nach Betriebssystem Execute shell (Shell ausführen) oder Execute Windows batch command (Windows-Batchbefehl ausführen).

  5. Führen Sie im Feld Befehl einen AWS CLI Befehl wie den folgenden aus. Ersetzen Sie jeden example resource placeholder durch Ihre Informationen.

    aws ssm start-automation-execution \ --document-name runbook name \ --region AWS-Region of your source AMI \ --parameters runbook parameters

    Der folgende Beispielbefehl verwendet das UpdateMyLatestWindowsAmiRunbook und den Systems Manager Manager-Parameter, die in latestAmi Aktualisieren Sie ein Golden AMI mithilfe von Automation, AWS Lambda, und Parameter Store erstellt wurden.

    aws ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'" --region region

    In Jenkins sieht der Befehl wie im Beispiel im folgenden Screenshot aus.

    Ein Beispielbefehl in Jenkins Software.
  6. Wählen Sie im Jenkins-Projekt Build Now aus. Jenkins gibt etwa die folgende Ausgabe zurück.

    Beispiel für eine Befehlsausgabe in Jenkins-Software.