По умолчанию клиенты Puppet запрашивают обновления каждые 30 минут. Я бы хотел изменить этот интервал. Как это сделать удобнее всего?
На клиенте (ах) отредактируйте /etc/puppet/puppet.conf и установите следующее (добавьте новую строку, если она еще не присутствует) в разделе [main] файла:
runinterval=xxx
где xxx - желаемый интервал опроса в секундах.
Как часто марионеточный агент применяет каталог. Обратите внимание, что интервал выполнения 0 означает «работать постоянно», а не «никогда не запускать». Если вы хотите, чтобы агент марионетки никогда не запускался, вы должны запустить его с параметром --no-client. Этот параметр может быть интервалом времени в секундах (30 или 30 с), минутах (30 м), часах (6 ч), днях (2 дня) или годах (5 лет).
Default: 30m
Если вы не хотите использовать runinterval, настройка cron может сработать. Это может быть особенно полезно, если у вас есть много серверов, которые вы не хотите одновременно поражать марионеточного мастера. Я использовал puppetmaster, чтобы вытолкнуть файл и обновить cron, со стороны клиента делать нечего (очевидно).
Вот что я использую (обратите внимание, что я запускаю его ежечасно, но вы можете просто сослаться на него в cron.d, Я не создавал этот скрипт и, к сожалению, не знаю, кому отдать должное.):
#!/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