Erstellen AMI Bild als Teil einer cloudformation-Stacks
Möchte ich zum erstellen einer EC2-cloudformation-Stacks, die grundsätzlich in den folgenden Schritten beschrieben:
1.- Starten Sie die Instanz
2.- Bestimmung der Instanz
3.- Stoppen Sie die Instanz, und erstellen Sie ein AMI-image heraus
4.- Erstellen Sie eine autoskalierender Gruppe mit den erstellten AMI-image als Quelle zum starten neuer Instanzen.
Grundsätzlich kann ich tun, 1 und 2 in einer cloudformation-Vorlage und 4 in einer zweiten Vorlage. Was ich don ' T scheinen in der Lage zu tun ist, erstellen Sie ein AMI-image von einer Instanz innerhalb einer cloudformation-Vorlage, die im Grunde erzeugt das problem, dass Sie manuell entfernen Sie die AMI, wenn ich will nehmen Sie den Stapel.
Dass gesagt wird, meine Fragen sind:
1.- Gibt es eine Möglichkeit zu schaffen, ein AMI-image von einer Instanz INNERHALB der cloudformation-Vorlage?
2.- Wenn die Antwort auf 1 Nein ist, gibt es eine Möglichkeit zum hinzufügen einer AMI-Bild (oder jede andere Ressource, für diese Angelegenheit) zu machen, Teil einer abgeschlossenen stack?
EDIT:
Nur zur Klarstellung, ich habe das problem bereits gelöst, die Erstellung der AMI und in einer cloudformation-Vorlage, ich kann es einfach nicht schaffen die AMI INNERHALB des cloudformation-Vorlage oder fügen Sie es irgendwie auf dem stack erstellt.
Als ich bemerkte auf Ricos Antwort, was ich jetzt Tue, ist, verwenden Sie ein ansible-playbook, das hat im wesentlichen 3 Schritte:
1.- Erstellen Sie eine Basis-Instanz mit einer cloudformation-Vorlage
2.- Erstellen, mit ansible, ein AMI der die Instanz erstellt auf Schritt 1
3.- Erstellen Sie den rest des Stapels (ELB, autoskalierender Gruppen, etc) mit einem zweiten cloudformation-Vorlage, die updates die man erstellt auf Schritt 1, und verwendet das AMI erstellt Schritt 2 zum starten von Instanzen.
Dies ist, wie Schaffe ich es jetzt, aber ich wollte wissen, ob es eine Möglichkeit zum erstellen eines AMI INNERHALB einer cloudformation-Vorlage oder wenn es möglich ist, fügen Sie die erstellte AMI auf dem Stapel (so etwas wie das erzählen der Stapel, "Hey, das gehört auch dir, so handle it").
InformationsquelleAutor | 2014-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können erstellen Sie ein AMI von einer EC2-Instanz innerhalb einer CloudFormation-Vorlage durch die Implementierung einer Benutzerdefinierte Ressource, ruft die CreateImage API auf erstellen (und fordert die DeregisterImage und DeleteSnapshot APIs auf löschen).
Da die AMIs können manchmal sehr lange dauern, um zu erstellen, eine Lambda-unterstützt Benutzerdefinierte Ressource brauchen, um wieder aufrufen, selbst wenn die Wartezeit noch nicht abgeschlossen ist, bevor die Lambda-Funktion mal aus.
Hier ist ein vollständiges Beispiel:
Vorlage half mir, mich für warten Bedingungen. danke..
InformationsquelleAutor wjordan
Für was es Wert ist, hier ist die Python-Variante von wjordan ist
AMIFunction
definition in der ursprünglichen Antwort. Alle anderen Ressourcen in den original-yaml unverändert bleiben:Ich jedoch beenden möchte, die Instanz, die gerade nach dem erstellen des image. In der oben genannten Funktion die ich Hinzugefügt Zeile
boto3.resource('ec2').Instance(instanceId).terminate()
direkt vor dem ersten Erfolg () - Aufruf. Aber es gibt eine Fehlermeldung "Invalid Response-Objekt: Wert der Eigenschaft Daten muss ein Objekt sein". Irgendeine Idee?InformationsquelleAutor Hynek Mlnarik
Warum nicht ein AMI zunächst außerhalb cloudformation und verwenden Sie dann, dass AMI Ihren letzten cloudformation-Vorlage ?
Eine weitere option ist das schreiben der Automatisierung zum erstellen von zwei cloudformation-stacks und löschen kann man das erste mal auf der AMI, die Sie erstellt haben, ist abgeschlossen.
Got ya. So, ich habe mich verändert meine Antwort für Nummer 2. Nun, ich erinnere mich, es gibt ein "Update-Stack" - Betrieb. Sie müssen den vollständigen JSON-template von der anfänglichen stack + die änderungen in derselben Datei.
Wenn ich verstehe, was du meinst, dann würde ich nur updaten, die AMI-id in der cloudformation-Vorlage, aber ich würde nicht die Zusammenlegung der AMI-image in den stack. Vielleicht zur Klärung noch weiter, da mache ich alles in einem Stapel, ich möchte in der Lage sein, um Sie zu löschen-stack und haben die AMI-erstellen Sie automatisch abgemeldet mit dem stack (wie im Fall der Instanzen, elbs und so weiter).
Ich glaube, so. Ich habe nicht selber ausprobiert. Wäre neugierig zu sehen, was das Ergebnis ist.
InformationsquelleAutor Rico
Während @wjdordan Lösung ist gut für einfache Anwendungsfälle, die Aktualisierung der Benutzer-Daten werden nicht aktualisiert, die AMI.
(DISCLAIMER: ich bin der ursprüngliche Autor)
cloudformation-ami
zielt darauf ab, mit denen Sie zu erklären AMIs in CloudFormation können, werden zuverlässig erstellt, aktualisiert und gelöscht werden. Mitcloudformation-ami
Sie können erklären, benutzerdefinierte AMIs so:WaitCondition
undCustom::AMI
Ressourcen (oder die Umbenennung die Logische ID der vorhandenen Definitionen, die eine neue erstellen und zu zerstören die alten). Für meine eigenen nicht einfacher use-case, ich wickle meine CloudFormation-Vorlage mit einem ERB-template und include-Teil der commit-hash in die Logische ID, z.B.AMICreate<%=commit%>
undAMI<%=commit%>
.Ja, dass macht Sinn! Danke für den Tipp
InformationsquelleAutor spg