Как лучше всего добавить новое задание cron на несколько серверов одновременно или автоматизировать создание задания cron на нескольких серверах?
Я планирую использовать rysnc для отправки сценария bash на несколько серверов, но мне нужно добавить задание cron, которое будет запускать этот сценарий.
Большинство современных дистрибутивов Linux поддерживают /etc/cron.d
framework, который позволит использовать модульный подход к отправке «сниппетов» cron на несколько серверов. Это специальный каталог, который каждую минуту сканируется на предмет доступных заданий. Вы можете поместить в каталог небольшие файлы cron. Это более элегантный подход, чем редактирование центрального или индивидуального crontab.
Видеть: В чем разница между /etc/cron.d и / var / spool / cron? Для получения дополнительной информации о немного другом формате, необходимом для использования этой платформы.
Я бы создал файлы jobs / cron и скопировал их на соответствующие серверы. Я думаю, что для чего-то такого масштаба Puppet или полный пакет управления конфигурацией - излишний.
Также можно рассмотреть Ansible, в нем есть модуль cron.
У Puppet есть cron-провайдер. (возможно, также CFEngine, Chef и некоторые другие варианты)
У него также есть изящный трюк, с помощью которого вы можете чередовать выполнение заданий cron, используя хэш имени хоста, например:
cron { "run-myscript":
command => "/path/to/myscript.sh",
minute => inline_template("<%= hostname.hash.abs % 60 %>"),
}
Если у вас более пары десятков серверов или вы думаете, что когда-нибудь вырастете до этого размера, то начало работы с управлением конфигурацией того стоит.
Для быстрого и грязного решения, кластерыш может сделать свое дело. Долгосрочным решением таких проблем было бы MCollective, Func, Ткань или Capistrano.
Я бы написал сценарий, который поместил бы в общий ресурс samba, к которому мог бы получить доступ весь мой сервер, затем я определю один и тот же cron для каждого и укажу на один и тот же сценарий!
Следует попробовать в качестве доказательства концепции, но я думаю, что он может работать с общим /var/spool/cron
каталог (например, общий ресурс nfs). Вы пробовали? Я бы сказал, что это будет простой способ