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
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.
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
- 5,731
- 12
- 61
- 107
- 7,903
- 29
- 26
-
1At one time changing the runinterval was discouraged because of memory leakage problems. I don't know if that concern still applies. – Scott Pack Jan 05 '11 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 06 '11 at 14:55
-
You can also start the Puppet client with the parameter --runinterval=x – Lauri Lehmijoki Jan 10 '11 at 06:56
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
- 2,925
- 1
- 18
- 27
-
6You can achieve the same random sleep using the splay and splaylimit settings in puppet.conf when running as a service. http://docs.puppetlabs.com/references/latest/configuration.html#splay – czervik Mar 13 '13 at 15:47