Obwohl ich TDD mit Puppet-Manifesten noch nicht durchführen konnte, haben wir einen ziemlich guten Zyklus, um zu verhindern, dass Änderungen ohne Tests in die Produktion gehen. Wir haben zwei Puppenspieler eingerichtet, einer ist unser Produktionspuppenmeister und der andere ist unser Entwicklungspuppenmeister. Wir verwenden die "Umgebungen" von Puppet, um Folgendes einzurichten:
- Entwicklungsumgebungen (eine für jede Person, die an Puppenmanifesten arbeitet)
- Testumgebung
- Produktionsumgebung
Unsere Anwendungsentwickler arbeiten an virtuellen Maschinen, die ihre Puppet-Konfigurationen aus der "Test" -Umgebung der Entwicklungs-Puppetmaster beziehen. Wenn wir Puppet-Manifeste entwickeln, richten wir normalerweise eine VM ein, die während des Entwicklungsprozesses als Testclient dient, und verweisen auf unsere persönliche Entwicklungsumgebung. Sobald wir mit unseren Manifesten zufrieden sind, schieben wir sie in die Testumgebung, wo die Anwendungsentwickler die Änderungen auf ihren VMs erhalten - sie beschweren sich normalerweise laut, wenn etwas kaputt geht :-)
Auf einer repräsentativen Teilmenge unserer Produktionsmaschinen befindet sich eine zweite Puppe, die im Noop-Modus ausgeführt wird und auf die Testumgebung zeigt. Wir nutzen dies, um potenzielle Probleme mit den Manifesten zu erkennen, bevor sie in die Produktion gehen.
Sobald die Änderungen abgeschlossen sind, dh die Maschinen des Anwendungsentwicklers nicht beschädigen und keine unerwünschten Ausgaben in den Protokollen des "noop" -Puppenprozesses der Produktionsmaschinen erzeugen, schieben wir die neuen Manifeste in die Produktion. Wir haben einen Rollback-Mechanismus eingerichtet, damit wir zu einer früheren Version zurückkehren können.