Bugfix: Puppet & Cron

cron

В процессе работы с Puppet было замечено две периодические баги, которые создают неудобства эксплуатации, но при этом замечательно лечатся через cron.

  • Первый баг:
    Notice: Run of Puppet configuration client already in progress; skipping  (/var/lib/puppet/state/agent_catalog_run.lock exists)
    

    Периодически зависающий «lock» файл, который может образоваться, например следствии некорректной перезагрузки сервера. В настройках Puppet нельзя указать время жизни данного файла,  да и сам демон за временем создания «lock» не следит. Решение — удаление через cron.

# cat puppetlock
3 * * * *    root /bin/find /var/lib/puppet/state/agent_catalog_run.lock -type f -mmin +60 -exec rm -f {} \; > /dev/null 2>&1
  • Второй баг:
    Number and status of runs during the last 30 days:
    — No runs found to report —
    

    Отсутствие активности puppet clent. Решение простое — принудительный запуск «puppet agent -t» с консоли или через «cron»

Проще всего распространить политику через puppet.

Для того, чтобы не создавать пиковую нагрузку на сервер, сделаем случайное время выполнения задачи через «fqdn_rand()».

В рамках одного клиента для данного манифеста рандомное значение меняться не будет, т.е. задание будет выполняться в одно и тоже время.

cat /etc/puppet/modules/puppet/manifests/init.pp

cron { "puppet_agent_t":
    ensure  => present,
    command => "/usr/bin/puppet agent --onetime --no-daemonize --logdest syslog > /dev/null 2>&1",
    user    => 'root',
    hour  => [fqdn_rand(23)],
    minute  => [fqdn_rand(30)]
  }

Puppet внесет свои коррективы в «/var/spool/cron/», о чем вежливо предупредит, при этом существующие задачи сохранятся.

# cat /var/spool/cron/root
# HEADER: This file was autogenerated at Mon May 05 11:50:32 +0400 2014 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: puppet_agent_t
24 5 * * * /usr/bin/puppet agent --onetime --no-daemonize --logdest syslog > /dev/null 2>&1
Вы можете оставить комментарий ниже.