2016-12-15 1 views
0

Ich schreibe gerade einen Jenkins Pipeline-Job, der Jenkins auf einem AWS AMI sichert und dann die Plugins aktualisiert. Ich kann das AMI kein Problem erstellen, aber im Idealfall würde ich gerne eine begrenzte Anzahl von diesen speichern, die älteste zu löschen, sagen wir, drei zu jeder Zeit.Erstellen von iterativen AWS-AMIs über ein Skript zur Verwendung in Jenkins

Dies ist eine zweigleisige Frage;

  1. Gibt es eine Möglichkeit durch Ami über Groovy zu erfassen und zu sortieren? (oder ein Shell-Skript, das dann in Groovy integriert werden kann). Wir haben dutzende von AMIs gespeichert, so dass ich in der Lage sein muss, nur die Namen eines bestimmten Weges zu durchsuchen und sie dann nach Datum und Versionsnummer zu sortieren. Ich bin ein Benennungssystem nach dem Vorbild der yyyymmdd_jenkinsbkup_## vorzustellen, wo die ## eine Versionsnummer ist (01, 02, usw.)

  2. Unter der Annahme, ja, kann ich die ältesten löschen und auf die nächste Versionsnummer iterieren beim Erstellen des nächsten AMI? Sagen wir, ich habe die folgenden drei

    gespeichert
    20161201_jenkinsbkup_08 
    20161204_jenkinsbkup_09 
    20161212_jenkinsbkup_10 
    

    kann ich irgendwie dann 20161201_jenkinsbkup_08 löschen und 20161215_jenkinsbkup_11

Ich bin ein AWS Noob zu schaffen, aber so weit gekommen in meinem Skript um ein Bild zu erstellen. Beachten Sie, dass dies in einem größeren Pipeline-Skript ausgeführt wird.

Antwort

0

Sie können AMIs sortieren, indem Sie ec2:describeImages Filter bereitstellen.
In Ihrem Beispiel würden Sie wahrscheinlich nach Name filtern und dann nach Datum sortieren (ich lege es nicht in den Namen, da createdDate bereits eine Eigenschaft ist), erstellen Sie einen Snapshot des neuesten und löschen Sie dann beide ami und der Schnappschuss der ältesten. Vielleicht möchten Sie den Snapshot mit der Ami-ID versehen, bevor Sie ihn löschen, damit Sie ihn bereinigen können, wenn Sie unterbrochen werden, bevor Sie ihn löschen können, da die Snapshots nicht gelöscht werden können, wenn der AMI existiert Zeige die Beziehung zum AMI, wenn es weg ist.

Ich weiß nicht, wie es in groovy von jenkins zu tun, aber es muss eine Möglichkeit geben, ec2 Befehle auszuführen, vielleicht ein Java SDK, wenn nicht ein groovy. Oder wenn Sie wollten, könnten Sie es in Lambda implementieren und rufen Sie einfach zum Lambda, wenn das besser ist. Das wäre attraktiv, wenn Sie Snapshots zu anderen Zeiten oder für andere Systeme zusätzlich zum Snapshot vor dem Update wünschen.

+1

Ich kämpfte immer noch damit, aber ich wollte dir Anerkennung dafür geben, dass er mich dazu gebracht hat, Bilder zu beschreiben; Danke für die Hilfe! – Alex

Verwandte Themen