Ich habe dazu tendiert, die Änderungszeit der Manifest- oder Hiera-Datei zu verwenden, in der Sie die Host-Einträge deklarieren, und diese in einen geeigneten Zeitstempel für die Serie zu konvertieren. (Sie können auch die neueste Datei aus einer Reihe von Dateien verwenden, wenn diese auf mehrere Dateien aufgeteilt ist, oder einen Zeitstempel für die letzte Änderung, wenn diese über eine andere Route wie eine Datenbank erfolgt.)
Leider ist die maximale Seriennummer eine 32-Bit-Ganzzahl ohne Vorzeichen, sodass Sie nur Zahlen bis 2147483647 verwenden können. Dies erlaubt uns leider nicht, Sekunden seit der Unix-Epoche als Seriennummer zu verwenden . Stattdessen wird standardmäßig JJJJMMTTxx verwendet. Dies setzt jedoch voraus, dass Sie die aktuelle Seriennummer als Status haben, wenn Sie sie bereits am selben Datum festgelegt haben.
Als Alternative und ohne dass Sie keine Datei einlesen und die Anzahl erhöhen müssen, verwende ich die folgende Inline-Vorlage:
$serial_mtime_file = '/etc/puppetlabs/code/environments/production/site/profile/manifests/dns_dhcp_pxe.pp'
$serial_secs = inline_template("<%= File.mtime(@serial_mtime_file).strftime(\"%y%j\").to_s + (File.mtime(@serial_mtime_file).to_i % 86400).to_s %>")
notify { "Created magical serial number ${serial_secs}": }
validate_numeric($serial_secs)
Dadurch erhalten Sie ein YYDDDsssss-Format (2-stelliges Jahr, 3-stelliger Tag des Jahres, 5-stellige Sekunde-in-Tag), das bis 2099 funktioniert (wenn Sie wie oben beschrieben mit 2000 beginnen) und jede Sekunde ein Update ermöglicht bis dann. Auf diese Weise können Sie diese Variable als Argument für jedes vorhandene Modul verwenden, mit dem Sie die Bindungskonfigurationen erstellen möchten, anstatt eine Vorlage zu benötigen, aus der Sie die vorhandene Seriennummer (zum Inkrementieren) zurücklesen können.
Vorlagen sind also in Ordnung, wenn Sie ein bisschen kreativ sind, woher Sie die Zeit haben, die Seriennummer mit festzulegen :)
Ich habe das oben genannte mit dem Camptocamp / Bind Puppetforge-Modul verwendet und dies funktioniert korrekt