Stoppen Sie die Opsworks-Bereitstellung nach dem ersten Fehler

Stoppen Sie die Opsworks-Bereitstellung nach dem ersten Fehler

Ich habe endlich die Einrichtung einer voll funktionsfähigen Umgebung in AWS Opsworks für eines unserer Projekte abgeschlossen, bin aber noch nicht vollständig damit in Betrieb gegangen.

Nachdem ich einige Optimierungen an einer meiner Vorlagen vorgenommen hatte, trat versehentlich ein Chef-Syntaxfehler auf, ich aktualisierte mein benutzerdefiniertes Cookbook-Repository auf den laufenden Instanzen und stellte meine App erneut bereit.

Mitten in der Bereitstellung ist die erste Instanz offensichtlich ausgefallen und die zweite hat die Bereitstellung trotzdem fortgesetzt. Beim Versuch, die Site über den Load Balancer zu laden, kann ich sehen, dass die Site bereits ausgefallen ist und die Bereitstellung auf der zweiten Instanz kurz darauf abgeschlossen wurde.

Wie ich sagte, war dies nicht in der Produktion und sobald wir live gehen, werden wir auch einen Staging-Stack haben und hoffentlich sollte nichts dergleichen live passieren (z. B. Chef-Syntaxfehler), aber trotzdem war ich neugierig, ob Opsworks etwas bereitstellt, wo man sagen kann: „Bei einer Instanz ist ein Fehler aufgetreten; beenden Sie jetzt die Bereitstellung für die restlichen Instanzen.“

Es wäre auch schön, wenn es eine Möglichkeit gäbe, benachrichtigt zu werden, wenn eine Bereitstellung fehlschlägt, beispielsweise durch das Senden einer SNS-Benachrichtigung oder etwas Ähnliches.

Ich war neugierig, wie andere Leute mit Situationen wie diesen umgehen: wenn eine Bereitstellung fehlschlägt, die Bereitstellung auf allen Instanzen gestoppt wird, Benachrichtigungen, Rollback usw. Oder vielleicht habe ich einige Konfigurationen auf dem Dashboard übersehen.

Antwort1

Leider unterstützt OpsWorks noch keine Rolling Deployments (wie CodeDeploy und Elastic Beanstalk). Daher ist es schwierig, die anderen Instanzen zu stoppen, die möglicherweise schon mitten in der Ausführung der Aufgabe sind, wenn eine Instanz ausfällt.

Mein Vorschlag ist, Ihren Produktionsstapel zu klonen, um einen Entwicklungsstapel zu erstellen. Legen Sie in Ihrem Rezept-Repository einen Master- und einen Produktions-Git-Zweig an. Ihr Entwicklungsstapel verwendet den Master und die Produktion den Produktionszweig.

Führen Sie alle Ihre Arbeiten und Tests auf dem Entwicklungsstapel durch, wo es nicht schlimm ist, wenn Sie versehentlich mit einem Chef-Syntaxfehler bereitstellen. Sobald Sie Ihre Änderungen getestet haben und davon überzeugt sind, dass sie für die Veröffentlichung bereit sind, führen Sie den Master in die Produktion ein und führen Sie die Aufgabe auf Ihrem Produktionsstapel aus.

verwandte Informationen