Marionette: Änderungen nur zu bestimmten Zeiten zulassen?

7

Ist es möglich, so einzurichten puppet, dass Änderungen an Manifesten nur zu bestimmten Zeiten angewendet werden, sodass eventuelle Ausfallzeiten auf unserem Server auftreten, wenn wir uns dazu entschließen?

Vielen Dank

Industriell
quelle

Antworten:

9

Ich musste nur dieses Problem lösen ... Es gibt einige Ansätze ...

  • Verwenden Sie cron. Wenn Sie ein Betriebssystem haben, das cron.d-Einträge unterstützt, verteilen Sie eine Puppet.cron-Datei über Puppet. Das zugehörige Manifest enthält etwas, das sicherstellt, dass der Puppet-Daemon deaktiviert ist. Wenn Sie viele Server haben, verwenden Sie eine Bash-Funktion, um die Cron-Pull-Zeit zufällig zu bestimmen und die Belastung des Master-Servers zu verringern. Siehe auch das Puppen-Wiki zu diesem Thema .

Das Modul, das ich benutze:

class puppet_cron {

   file { '/etc/cron.d/puppet.cron':
     ensure   => file,
     owner    => root,
     group    => root,
     mode     => 644,
     source   => "puppet:///modules/puppet_cron/puppet.cron",
   }

   service { 'puppet':
     ensure    => stopped,
     enable    => false,
   }

}

Ein Beispiel für puppet.cron:

# puppet.cron
#
# Run puppet in one-time mode during daily downtime window.
# 

# Puppet check window for Monday through Thursday
*/15 16-19 * * 1-5 root exec /usr/sbin/puppetd --no-daemonize -o
  • Es gibt einen Metaparameter für den Puppet-Zeitplan , mit dem Sie die Zeiten auflisten können, zu denen Manifeste pro Klasse ausgewertet werden sollten. Siehe: https://serverfault.com/a/341865/13325

  • Ich habe kürzlich ein Buch gelesen, in dem vorgeschlagen wurde, Git als Manifestverteilungsmethode zu verwenden, um die Belastung des Master-Servers zu skalieren und zu reduzieren. Dies bedeutet, dass Sie die Zeitplanung genauer steuern können.

ewwhite
quelle
Sie müssen keine Bash-Funktion verwenden, um die Zeit zufällig zu bestimmen - dafür ist die fqdn_rand()Puppet-Funktion gedacht.
Jgoldschrafe
@ewwhite kann mich mit dem Git-Post verlinken?
Cherian
@Cherian Der Prozess wird in diesem Artikel beschrieben , aber auch im Buch des Autors, The Puppet Cookbook, ausführlich behandelt .
ewwhite
5

Ja, richten Sie einfach den Cronjob ein, mit dem die Puppe ausgeführt wird, damit sie nur zu bestimmten Stunden ausgeführt wird. Puppe als Dämon laufen zu lassen ist eine wirklich schreckliche Idee. Wir verwenden die IP-Adresse des Servers als Schlüssel für eine Hashing-Funktion, um unsere Cronjobs über den gesamten Zeitraum unserer Puppet-Läufe zu verteilen und ein donnerndes Herdenproblem zu vermeiden.

womble
quelle