Chef cron provider создает несколько записей crontab

Мы запускаем 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 провайдера.


person tbizzle    schedule 21.04.2014    source источник
comment
Этот вопрос кажется не по теме, потому что это, скорее всего, ошибка поставщика Chef cron, о которой следует сообщить на странице Tickets.opscode. com.   -  person sethvargo    schedule 23.04.2014
comment
Спасибо @sethvargo - отправлено как CHEF-5256   -  person tbizzle    schedule 30.04.2014


Ответы (1)


Это действительно похоже на ошибку, но возможным обходным решением может быть удаление всех заданий crontab непосредственно перед их созданием: crontab -r -u USERNAME

person Tom Kregenbild    schedule 17.11.2014