Hi,
wir hatten uns bei der Einführung von Puppet vorgenommen Produktiv- und Development-Environment voneinander zu Trennen. Um diesem Ziel etwas näher zu kommen existiert im Puppet-Base Repo jetzt ein zusätzlicher Branch "production". Dieser Branch definiert den Zustand des produktiven Puppet- Masters auf puppet.ffnw.de.
Die Entwicklung erfolgt wie bisher im Master-Branch. Wer also aktuell für Puppet entwickelt, für den ändert sich nichts. Der Master-Branch ist der Branch, der auf Testsystemen genutzt werden sollte und im Zweifelsfall auch kaputt gehen darf.
Wie switche ich zwischen den Branches? +++ Easy mit: # git checkout BRANCH # git submodule update
Wie kommen Änderungen aus Master in Production (3 Fälle)? +++ 1. Wenn der Master-Branch des Puppet-Base Modules insgesamt einen stabilen Stand hat und auch die Submodule im Master auf stabile Commits konfiguriert sind, dann kann man den Master einfach in den Production Branch mergen: # cd /puppet/base/repo # git checkout production # git merge master # git submodule update # git push
2. Ist der Master-Branch nicht auf einem stabilen Stand, dann können einzelne Submodule im Production-Branch auf stabile commits konfiguriert werden sodass die Submodule im Production-Branch auf andere Commits konfiguriert sind als die Submodule im Master-Branch: # cd /puppet/base/repo # git checkout production # cd ./path/to/submodule/ # git checkout stable-commit-id # cd /back/to/puppet/base/repo # git commit # git push
3. Wenn einzelne Dateien im Master-Branch geändert wurden (z.B. hiera.yaml oder .gitlab-ci.yml) und diese Änderungen im Production Branch verfügbar gemacht werden sollen während einige Submodule im Master-Branch auf instabile Commits konfiguriert sind dann kann nach dem merge statt einem "submodule update" ein "git commit" durchgeführt werden um die Commit-Referenzen wieder auf den Stand von vor dem Merge zurückzusetzen und somit nur die Änderungen z.B. an der hiera.yaml in Production zu übernehmen (ungetestet!): # cd /puppet/base/repo # git checkout production # git merge master # git commit # git push
Verschiedene Branches auch für Submodule? +++ Kann ein Entwickler machen, wenn er das benötigt, ist aber unabhängig vom reinen Zweck der Trennung in Production und Master.
Keine zwei verschiedenen Environment-Ordner in Puppet? +++ Nope, mit zwei verschiedenen Ordnern funktioniert das Merging nicht.
Das sollte dann bei Zeiten auch in der Readme vermerkt werden. Für heute reichts aber ja erstmal hier auf der ML. Anregungen, Hinweise wie immer gerne.
Viele Grüße Clemens