2016-06-29 4 views
0

Ich bin auf der Suche nach einigen Beispielen zur Programmierung von Wächtern, um differentielle Implementierungen zu erreichen. Angenommen, ich habe exe1, exe2, sql1, sql2 als meine gesamte Anwendung. Ich erstelle ein komplettes Kochbuch mit Schritten zur Bereitstellung der gesamten Anwendung. Stellen Sie es auf meinen Servern bereit.Chef für Windows, Gaurd Beispiele für die Bereitstellung nur von Änderungen

Dann mache ich eine Änderung in sql2. Ich mache Änderungen im Kochbuch und lade das hoch; Das komplette Kochbuch geht auf den Server. Nun möchte ich, dass der Chef die erforderlichen Schritte zur Bereitstellung von sql2 NUR ausführt. Bewerkstelligt Küchenchef das automatisch? Ich sehe Beispiele, wo Wächter geschrieben werden, z. Prüfe auf Vorhandensein der DB-Instanz, wenn nicht installiert, etc. Muss ich ähnliche Wächter schreiben, um nach Dateiänderungen zu suchen und nur bei Änderungen zu implementieren? Was sind die besten Praktiken?

Antwort

0

Die meisten Chef-Ressourcen (und ähnliche Konstrukte in anderen modernen CM-Tools) sind "idempotent", was bedeutet, dass sie nur die erforderlichen Maßnahmen ergreifen, um den gewünschten Endzustand zu erreichen. Das heißt, wenn Sie beispielsweise eine template Ressource haben und der Inhalt bereits korrekt ist, wird sie nicht aktualisiert. Einige Ressourcen können nicht von Natur aus idempotent sein, vor allem execute und Freunde, so dass Sie zusätzliche Prüfungen schreiben können, um die Idempotenz selbst sicherzustellen.

+0

Blick auf die Beispiele in Chef-Tutorials, scheint dies nicht wahr zu sein. Beispiele sind übersät mit Überprüfungen, die man selbst schreiben muss. Wie IIS installieren nur wenn nicht installiert, erstellen DB, wenn nicht erstellt wird. Ich nehme an, dass die Beispiele geschrieben wurden, um zu veranschaulichen, dass man Idempotenz programmieren muss. – Amit

+0

Ich sollte auch klarstellen, dass idempotent bedeutet, dass die mehrfache Ausführung derselben Operation den Status/das Ergebnis usw. nicht ändert. Die erneute Bereitstellung der DB auf einem laufenden Server kann nicht sicher idempotent gemacht werden; es sei denn, Sie haben keine Daten auf dem Server. In ähnlicher Weise können einige Skripts nicht immer wieder ausgeführt werden, ohne den Status/das Ergebnis zu ändern. Die Koch-Beispiele zeigen deutlich, wie wichtig es ist, geeignete Wachen einzusetzen. – Amit

+0

Viele Tutorials zielen nicht darauf ab, besonders guten Chefcode zu produzieren. Die Ressource 'windows_feature', die zur Installation von IIS verwendet wird, ist bereits intern idempotent, da sie die Liste installierter Features in der Registrierung überprüfen kann, um zu sehen, ob sie die Installation für jede Konvergenz ausführen muss. Wie ich schon sagte, einige Ressourcen sind nicht idempotent, also müssen Sie Ihre eigenen Wächter schreiben oder sicherstellen, dass die ausgeführten Befehle selbst idempotent sind. – coderanger

Verwandte Themen