So habe ich mich diesem Bereich genähert, während ich die Rolle des Sysadmin / Devops tragen wollte. Die meisten der folgenden sind nur allgemeine Prinzipien, denen ich zu folgen versuche, und nicht kochspezifisch.
Am Ende habe ich mich für Puppet entschieden, weil ich festgestellt habe, dass es zu diesem Zeitpunkt mehr Ressourcen gibt, und mich leichter für mich zu fühlen fühlte.
Ich habe mir die verschiedenen vorgefertigten Module angesehen, die für Dinge wie Apache, PHP5 usw. verfügbar sind. Viele von ihnen schienen weit mehr zu tun, als ich brauchte, und waren mit der Plattform so unbekannt, dass ich nicht vertraute, was vor sich ging. Ich entschied, dass es für mich einfacher sein würde, nur zu identifizieren, was ich für jeden Knotentyp tun musste.
Ich begann den Prozess mit der Bereitstellung der lokalen Entwicklungsumgebung des Teams (vargrant + virtual box). Für jeden Dienst / jede Komponente habe ich ein Modul erstellt: PHP5, Apache2, Redis, MySQL usw.
Sobald die Entwicklungsumgebung stabil war / funktionierte, begann ich mit dem Aufbau der QS-Umgebung. Ich habe generische Knotentypen für Webserver, Redis, Lacke usw. definiert, die dieselben Module wie dev wiederverwendeten. Sobald dies erledigt war, waren für Staging und Produktion nur minimale Änderungen erforderlich, um den Betrieb aufzunehmen.
Während Sie Ihre Rezepte / Vorlagen durchgehen und schreiben, sollten Sie überlegen, wie Sie sie wiederverwenden / verallgemeinern können. Codieren Sie keine Dinge wie Pfade oder Benutzer / Gruppen, die sich zwischen Distributionen / Projekten / Umgebungen ändern könnten. Da Sie einen verallgemeinerten Ansatz betrachten, würde ich vermuten, dass eine große Hürde darin besteht, Unterschiede zwischen * nix-Verteilungen zu beseitigen.
Am wichtigsten ist, dass behalten einfach ist. Automatisieren / standardisieren Sie die wichtigsten / zeitaufwändigsten Teile der Umgebung. Iterieren, weiterentwickeln.