Weblog
Guerilla Puppet'ing
19.10.2025 2 Min. Lesezeit
Puppet ohne Puppet Master verwenden
Vor Jahren mußte ich ein Deployment auf mehreren Servern durchführen, auf denen kein Puppet Agent installiert war. Leider stand es außer Frage, dafür noch eine vernünftige Puppet-Infrastruktur aufzubauen. Also begann ich, mssh zu verwenden — begleitet von einem kleinen emotionalen Zusammenbruch.
Du kannst dir vorstellen, dass es nicht lange dauerte, bis mssh einfach nicht mehr flexibel genug war. Und seien wir ehrlich: Wenn man sich erst einmal an Puppet gewöhnt hat, fühlt sich alles andere irgendwie falsch an.
Die Lösung für mein Problem war überraschend simpel:
Einfach Puppet ohne Puppet Master verwenden.
Vielleicht kennst du die apply-Funktion bereits — sie ist gut dokumentiert — aber schauen wir sie uns trotzdem noch einmal an.
Einfaches apply
Führe einfach ein normales Manifest aus:
puppet apply masterless.pp
Das ist die einfachste Möglichkeit, Puppet ohne Puppet Master zu verwenden.
masterless.pp kann dabei entweder ein reguläres Modul sein oder einfach schnell zusammengeschriebener Code wie dieser:
define feature ($foo) {
# Dinge tun
}
feature{
foo => bar,
}
Hiera verwenden
Wenn dein bestehender Code Werte aus der Hiera-Datenbank benötigt, ist das überhaupt kein Problem.
Du brauchst lediglich eine Kopie deiner Hiera-Struktur sowie den passenden Parameter:
puppet apply masterless.pp --hiera_config=./hiera.yaml
--hiera_config den Pfad zur Hiera-Konfigurationsdatei (hiera.yaml) an — nicht die node- oder modulspezifischen YAML-Dateien (oder JSON-Dateien oder welches Backend du auch verwendest).
Puppet-Hashbang
puppet apply direkt auf der Kommandozeile auszuführen macht zwar Spaß, aber da wir alle schreibfaul sind, warum nicht einfach den kompletten puppet apply-Aufruf in den Hashbang packen und die Datei ausführbar machen?
#!/usr/bin/puppet apply --hiera_config=/tmp/hiera.yaml
define feature ($foo) {
# Dinge tun
}
feature{
foo => bar,
}
Achievement unlocked:
Shell Scripting mit Puppet