Я экспериментирую с марионеткой, и мы используем FreeBSD на некоторых серверах. Я заметил, что агент на FreeBSD по какой-то причине пропускает запуски, а именно:
May 6 09:19:15 eagle puppet-agent[66970]: Finished catalog run in 1.97 seconds
May 6 09:49:14 eagle puppet-agent[74306]: Finished catalog run in 1.72 seconds
May 6 10:19:29 eagle puppet-agent[80895]: Finished catalog run in 2.19 seconds
May 6 10:49:29 eagle puppet-agent[87436]: Finished catalog run in 2.37 seconds
May 6 12:19:26 eagle puppet-agent[7879]: Finished catalog run in 2.51 seconds
May 6 12:49:26 eagle puppet-agent[14528]: Finished catalog run in 2.64 seconds
Как видите, он пропустил два запуска (11:19 и 11:49). К сожалению, в журнале больше нет строк марионеток. Я проверил процесс марионеточного агента, и он все время работал.
Puppet - это версия v3.1.1, построенная из портов, FreeBSD - это 8.3-STABLE, и я использовал конфигурацию -dist, и я изменил только несколько параметров, самое главное
runinterval = 30m
Хост работает под виртуализацией KVM, поэтому есть небольшие изменения времени:
May 6 10:20:28 eagle ntpd[656]: time reset -0.296053 s
May 6 11:19:03 eagle ntpd[656]: time reset -0.333463 s
May 6 12:21:38 eagle ntpd[656]: time reset -0.328728 s
Как вы можете видеть, есть ход на 0,33 секунды примерно в то время, когда марионетка должна работать, но я не уверен, важно это или нет. Это меньше, чем одна секунда, он движется назад, и до запуска должно быть еще несколько секунд.
Я знаю, что могу запускать марионеточные запуски из cron, но я хотел бы использовать режим демона, потому что я планирую использовать REST API.
Есть ли способ отладить механизм "триггера времени"?
Поскольку я не смог найти причину этого, я «решил» проблему очевидным обходным путем. У меня очень длинный (1000 дней) интервал запуска в puppet.conf, и я запускаю марионеточные циклы из cron через REST API.