Se você quiser evitar o uso de runinterval, configurar um cron pode funcionar bem. Isso pode ser especialmente útil se você tiver muitos servidores que você deseja impedir de atingir o seu puppetmaster ao mesmo tempo. Eu usei o puppetmaster para empurrar o arquivo e atualizar o cron, nada a fazer do lado do cliente (obviamente).
Veja o que estou usando (note que estou executando de hora em hora, mas você poderia fazer referência a ele no cron.d, Eu não criei esse script e, infelizmente, não sei a quem creditar ):
#!/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