Мы запускаем Chef 11.4.4 с установкой без омнибуса (он устанавливается как гем). В одной из наших кулинарных книг мы используем поставщика cron, например:
checksum = Digest::MD5.hexdigest(node['fqdn'] || 'unknown-hostname')
sleep_time = checksum.to_s.hex % node['custom_command']['splay'].to_i
cron "custom_command" do
user "custom_user"
hour 0
minute 0
command "/bin/sleep #{sleep_time}; /home/custom_user/custom_command.sh"
end
Каким-то образом это создает несколько записей cron примерно в 0,01% времени. На пораженном сервере мы получаем следующий вывод от crontab -u custom_user -l
:
# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh
# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh
Запуск chef-client не изменяет crontab. Но редактирование crontab и удаление обеих записей с последующим запуском chef-client снова решит проблему. Тогда результат crontab -u custom_user -l
выглядит (правильно) так:
# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh
Эта проблема появляется случайно - в настоящее время нам нужно исправлять около 1 сервера в день. Так что это похоже на какую-то проблему гонки.
Кто-нибудь еще сталкивался с этой же проблемой? Не видел у cron_d
провайдера.
cron
, о которой следует сообщить на странице Tickets.opscode. com. - person sethvargo   schedule 23.04.2014