16

By default, Puppet clients ask for updates every 30 minutes. I would like to change this interval. What is the most convenient way to do it?

2 Answers 2

31

On the client(s), edit /etc/puppet/puppet.conf and set the following (add a new line if it's not already present) in the [main] section of the file:

runinterval=xxx

where xxx is your desired polling interval in seconds.


Runinterval

How often puppet agent applies the catalog. Note that a runinterval of 0 means “run continuously” rather than “never run.” If you want puppet agent to never run, you should start it with the --no-client option. This setting can be a time interval in seconds (30 or 30s), minutes (30m), hours (6h), days (2d), or years (5y).

Default: 30m
3
  • 1
    At one time changing the runinterval was discouraged because of memory leakage problems. I don't know if that concern still applies.
    – Scott Pack
    Jan 5, 2011 at 16:18
  • +1 packs - good point. I haven't seen that issue since upgrading to 2.6 on Centos 5.5 (64bit)
    – Patrick R
    Jan 6, 2011 at 14:55
  • You can also start the Puppet client with the parameter --runinterval=x Jan 10, 2011 at 6:56
6

If you would like to avoid using runinterval, setting up a cron could work well. This could be especially useful if you have many servers that you want to keep from hitting your puppetmaster at the same time. I used the puppetmaster to push out the file and update cron, nothing to do from the client side (obviously).

Here's what I'm using (note that I'm running it hourly but you could just reference it in cron.d, I did not create this script and unfortunetly do not know who to credit):

#!/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
1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .