Comment changer l'intervalle d'interrogation du Puppet master?

16

Par défaut, les clients Puppet demandent des mises à jour toutes les 30 minutes. Je voudrais changer cet intervalle. Quelle est la manière la plus pratique de procéder?

Lauri Lehmijoki
la source

Réponses:

30

Sur le (s) client (s), éditez /etc/puppet/puppet.conf et définissez ce qui suit (ajoutez une nouvelle ligne si elle n'est pas déjà présente) dans la section [principale] du fichier:

runinterval=xxx

où xxx est l'intervalle d'interrogation souhaité en secondes.


Runinterval

Fréquence à laquelle l'agent fantoche applique le catalogue. Notez qu'un intervalle d'exécution de 0 signifie «exécuté en continu» plutôt que «jamais exécuté». Si vous voulez que l'agent de marionnettes ne s'exécute jamais, vous devez le démarrer avec l'option --no-client. Ce paramètre peut être un intervalle de temps en secondes (30 ou 30s), minutes (30m), heures (6h), jours (2d) ou années (5y).

Default: 30m
Mike Scott
la source
1
À un moment donné, la modification de l'intervalle d'exécution a été déconseillée en raison de problèmes de fuite de mémoire. Je ne sais pas si cette préoccupation s'applique toujours.
Scott Pack
+1 packs - bon point. Je n'ai pas vu ce problème depuis la mise à niveau vers 2.6 sur Centos 5.5 (64 bits)
Patrick R
Vous pouvez également démarrer le client Puppet avec le paramètre --runinterval = x
Lauri Lehmijoki
6

Si vous souhaitez éviter d'utiliser runinterval, la configuration d'un cron pourrait bien fonctionner. Cela pourrait être particulièrement utile si vous avez de nombreux serveurs que vous souhaitez empêcher de frapper votre marionnettiste en même temps. J'ai utilisé le marionnettiste pour extraire le fichier et mettre à jour cron, rien à faire du côté client (évidemment).

Voici ce que j'utilise (notez que je le lance toutes les heures mais vous pouvez simplement le référencer dans cron.d, je n'ai pas créé ce script et malheureusement je ne sais pas qui créditer ):

#!/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
la source
6
Vous pouvez obtenir le même sommeil aléatoire en utilisant les paramètres splay et splaylimit dans puppet.conf lors de l'exécution en tant que service. docs.puppetlabs.com/references/latest/configuration.html#splay
czervik