Jak zmienić interwał odpytywania mistrza marionetek?

16

Domyślnie klienci Puppet proszą o aktualizacje co 30 minut. Chciałbym zmienić ten interwał. Jaki jest najwygodniejszy sposób to zrobić?

Lauri Lehmijoki
źródło

Odpowiedzi:

30

Na klientach, edytuj /etc/puppet/puppet.conf i ustaw następujące (dodaj nowy wiersz, jeśli jeszcze go nie ma) w sekcji [main] pliku:

runinterval=xxx

gdzie xxx to żądany interwał sondowania w sekundach.


Runinterval

Jak często agent marionetkowy stosuje katalog. Zauważ, że wartość runinterval równa 0 oznacza „działaj w sposób ciągły” zamiast „nigdy nie uruchamiaj”. Jeśli chcesz, aby agent marionetek nigdy nie działał, powinieneś uruchomić go z opcją --no-client. To ustawienie może być przedziałem czasu w sekundach (30 lub 30s), minutach (30m), godzinach (6h), dniach (2d) lub latach (5y).

Default: 30m
Mike Scott
źródło
1
Pewnego razu zmiana przedziału czasu pracy była odradzana z powodu problemów z wyciekiem pamięci. Nie wiem, czy ta obawa nadal obowiązuje.
Scott Pack
Pakiety +1 - dobry punkt. Nie widziałem tego problemu od czasu aktualizacji do wersji 2.6 Centos 5.5 (64bit)
Patrick R
Możesz także uruchomić klienta Puppet za pomocą parametru --runinterval = x
Lauri Lehmijoki
6

Jeśli chcesz uniknąć używania runinterval, skonfigurowanie crona może działać dobrze. Może to być szczególnie przydatne, jeśli masz wiele serwerów, które chcesz powstrzymać przed uderzeniem twojego puppetmastera w tym samym czasie. Użyłem puppetmastera do wypchnięcia pliku i aktualizacji crona, oczywiście po stronie klienta.

Oto, czego używam (zauważ, że uruchamiam go co godzinę, ale możesz po prostu odwoływać się do niego w cron.d, nie utworzyłem tego skryptu i niestety nie wiem, komu przypisać ):

#!/bin/bash
#/etc/cron.hourly/puppetRun.sh

# This file managed by Puppet.

# Leave this script in cron.  To disable Puppet, run 'puppetd --disable'
# to temporarily suspend the running of Puppet for testing purposes.

PROG=`basename $0 .sh`
exec > /usr/local/logs/${PROG}.last.trace 2>&1
set -x

if [ -e "/var/run/puppet/puppetd.pid" ]; then
  echo "Puppet is already running or has been disabled.  Remove the lock file /var/run/puppet/puppetd.pid or run
'puppetd --enable'."
  exit
fi

# Randomly sleep so all Puppet clients don't hit the Puppet Master at once.
WAIT=$((RANDOM % 60 * 60))
echo "Sleeping $WAIT seconds..."
/bin/sleep $WAIT


/usr/sbin/puppetd --onetime --no-daemonize --logdest syslog > /dev/null 2>&1
Patrick R.
źródło
6
Możesz osiągnąć ten sam losowy sen, używając ustawień splay i splaylimit w puppet.conf podczas działania jako usługa. docs.puppetlabs.com/references/latest/configuration.html#splay
czervik