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?
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
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
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