fragen stichworte

Best Practices für das Management von Puppenmodulen mit dem Lebenszyklusansatz von Softwareentwicklung?

Wie organisieren Menschen ihre Puppet-Manifeste und -Module in Ihrem Quellcode-Repository? Ich sehe keine offensichtliche Möglichkeit, Änderungen in Puppet schrittweise an einem einzelnen Puppet-Master vorzunehmen.

Wie verwalten andere Leute das? Eine Master-Server-Instanz pro Servergruppe/SDLC-Phase? Ich würde sehr gerne die gleichen Puppet-Module in jeder Phase verwenden und einfach Subversion verwenden, um zu ändern, welche Version der Puppet-Module auf jede Servergruppen-/SDLC-Phase angewendet wird, sodass ich die Änderungen schrittweise durchführen kann. Ich suche nach einer Möglichkeit, dieselben Module zu nutzen und Unfälle und Variationen aufgrund von doppelten Modulen zu vermeiden.

Ich habe eine Reihe von Servern, die ich mit Marionetten verwalte, mit mehreren SDLC-Phasen (Software-Entwicklungszyklus). Notfallwiederherstellung, Produktion, Bereitstellung, Benutzerakzeptanztest, Test, Entwicklung, Schulung

Bearbeiten, um den zweiten Teil klarer zu machen:

Und wie pflegen Sie Ihre Niederlassungen in Ihrem Quell-Repo? Zum Beispiel mit dev- und test-Zweigen und einer Datei, die definiert, woher ich meine Patches bekomme.

Bearbeiten Sie:

Repo:/dev/patchessource.txt für "patchserver/dev"

Repo:/test/patchessource.txt für "patchserver/test"

und haben diese Dateien unterschiedlich, und müssen diesen Unterschied beim Zusammenführen und bei allem vom Entwickler bis zum Test beibehalten, oder haben die Benutzer für jede Umgebung eine andere Datei und migrieren sie als Ganzes:

Repo:/dev/devpatchsource.txt für "patchserver/dev"

Repo:/dev/testpatchsource.txt für "patchserver/test"

Auf diese Weise müssen Sie sich beim Zusammenführen Ihres Dev-Repos mit Ihrem Test-Repo nicht um die dev-spezifischen Einstellungen kümmern, die Ihre testspezifischen Einstellungen überschreiben.

Ich sehe keine offensichtliche Lösung, um es für Folgeadministratoren zu vereinfachen, die sich mit Quellcode-Management-Tools möglicherweise nicht auskennen.

Irgendwelche Tipps wären sehr dankbar.

antworten

In

Umgebungen wird dies gelöst. Mit der Umgebung können Sie Konfigurationen für Produktion, Staging, ua Testen, Testen, Entwickeln, Training usw. definieren.

Eine ausführliche Erklärung dazu ist etwas umfangreich, aber hier sind einige Referenzen, die Sie lesen können, um Ihnen den Einstieg zu erleichtern:

Im Master-Repository haben Sie eine Verzweigung für development, testing und production (oder was auch immer zu Ihrem Workflow passt). Sie schreiben Ihren Puppet-Code gerne auf dem Entwicklungszweig, geben Sie ein, legen Sie fest, drücken Sie. Ihr Puppet Master wird aktualisiert (durch R10K), wenn Sie (durch einen Git-Hook- oder Cron-Job) drücken, und Ihre Knoten erhalten ihre Aktualisierung zum geplanten Zeitpunkt.

Vermutlich haben Sie einen Knoten, der auf die development -Umgebung eingestellt ist, so dass die Änderungen, die Sie im Zweig development gepusht haben, erhalten werden. Sie können das alles testen.

Sie sind mit Ihren Änderungen zufrieden, fügen Sie sie in den nächsten Zweig des Workflow-Schrittes ein - sagen Sie production. Drücken Sie die zusammengeführten Änderungen und der Zyklus beginnt - Puppet Master erhält die Änderungen in der production -Umgebung, und die Produktionsknoten wenden die neue Konfiguration an.

-

Nun gibt es eine allgemeine Verwirrung, die ich sehe, wie die Leute sich befinden. Ein development -Zweig für den Control Repo bedeutet nicht "Dies ist die Konfiguration für die Programmiermaschinen". Nein, es ist Ihre Marionettenentwicklungsabteilung.

Wie pflegen Sie also eine Reihe von Servern, z. B. Webserver, für 3 Teams - Entwickler, QA und Produktion? Das heißt Jede dieser Gruppen verfügt über einen Webserver, der fast gleich konfiguriert ist, jedoch Nuancen aufweist, da eine Live-Produktionsanlage ist, eine die QA-Gruppe und die andere der Dev.

Dafür verwenden Sie Hiera. Auf jeden Knoten werden die gleichen Klassen angewendet, aber die Nuance in den Parametern oder was Sie über Hiera festgelegt haben.


Natürlich können Sie Äste anstelle von Hiera auch als "Typ der zu verwaltenden Maschine" bezeichnen. Dies ist jedoch etwas lächerlich, da Sie Git-Zweig nicht für ihren eigentlichen Zweck verwenden würden. Die Verzweigung wäre völlig anders und Sie müssten sie manuell zusammenfügen, indem Sie sie von einem zum anderen kopieren/einfügen. Das wäre hässlich.