Environments vergleichen mit catalog_preview ohne Puppet Master
Ich habe pro Environment eine Branch im Git. Bei einer Änderung will ich vorab sehen wo sie konkret Auswirkungen hat. Dies kann man mit dem catalog_preview Modul von Puppet machen. Auch ohne Zugriff auf den Master - es lässt sich mit vertretbarem Aufwand erreichen.
Standardmässig kann man es auf dem Puppet Master ausführen. Es wäre aber schon vor grossem Vorteil, wenn man die Änderung schon bevor man einen Commit gemacht hat teste könnte.
Dazu musst du:
- (einmalig) eine Kopie vom yamldir Ordner auf dem Puppet Master organisieren (
puppet master --configprint yamldir) und in einem Ordner (z.B. mock_yaml) speichern - in den yaml Dateien findest du die Node und Fact Daten. Diese werden benötigt für den Kompiliervorgang
- einmalig ist untertrieben - die Daten sollten natürlich einigermassen den aktuelle Nodes entsprechen und somit auch regelmässig wieder aktualisiert werden
- installiere dir das catalog_preview Modul:
puppet module install puppetlabs-catalog_preview - das brauchst du nicht als root zu machen. Wenn du es als User ausführst landet es in deinem User-Verzeichnis (puppet module --configprint basemodulepath)
- Mache einen Checkout der baseline (z.B. master Branch) and Kopiere deinen aktuellern Branch als preview (feature branch) in einen gemeinsamen Ordner z.B. environments damit das dann so etwa aussieht:
environments/production/...undenvironments/feature/...
- Lasse
puppet previewmit den folgenden Parametern laufen:--environmentpath $(pwd)/environments--yamldir $(pwd)/mock_yaml--node_terminus yaml--baseline_environment=production--preview_environment=feature- ... weiter Parameter sind nötig wenn du hieradaten hast (
hiera_configparam und eine entsprechendehiera.yaml) !
Beispiel
Ordner- und Dateistruktur für diesen kleinen Test:./environments/feature/manifests/site.pp
./environments/production/manifests/site.pp
./mock_yaml
./mock_yaml/node/mock.node.yaml
./mock_yaml/node/mock1.node.yaml
./mock_yaml/facts/mock.node.yaml
./mock_yaml/facts/mock1.node.yaml
Preview:
#> /opt/puppetlabs/bin/puppet preview \
--environmentpath $(pwd)/environments \
--yamldir $(pwd)/mock_yaml \
--baseline_environment=production \
--preview_environment=feature \
--view overview \
mock.node mock1.node
Stats
Total number of nodes: 2, 100.0%
Conflicting..........: 2, 100.0%
Compliant............: 0, 0.0%
Equal................: 0, 0.0%
Changes per Resource Type
Notify
title: 'määääääh' (missing, conflicting) at: /home/mock/tmp/puppettest/environments/production/manifests/site.pp:1 on mock.node, mock1.node
title: 'muhhh' (added, compliant) at: /home/mock/tmp/puppettest/environments/feature/manifests/site.pp:1 on mock.node, mock1.node
Changes of Edges
added_edges
Class[main] => Notify[muhhh] on nodes mock.node, mock1.node
missing_edges
Class[main] => Notify[määääääh] on nodes mock.node, mock1.node
Top ten nodes with most issues
node name errors warnings diffs
---------- -------- -------- --------
mock.node 0 0 2
mock1.node 0 0 2