Контроль версий Crontab?

У меня есть несколько десятков Linux-машин с cron, и я хотел бы поместить crontabs в какую-нибудь систему контроля версий. Для управления исходным кодом я использую Mercurial (hg), так что это было бы идеально, но если есть какая-то другая система, которая лучше подходит для этой задачи, я бы рассмотрел ее.

Один аспект, специфичный для моей ситуации, заключается в том, что все crontabs принадлежат обычному пользователю (не реальному человеку, а логину-заполнителю «услуги»). Я бы хотел, чтобы история изменений включала фактического автора каждого изменения, а не специальную учетную запись, в которой фактически выполняются задания cron.


person John Zwinck    schedule 25.11.2008    source источник
comment
Рассматривали ли вы возможность использования /etc/crontab.d? Вы можете хранить шаблоны crontab в системе управления версиями, с заполнителями для пользователя и всем остальным, что может различаться в разных системах.   -  person ealfonso    schedule 30.04.2019


Ответы (3)


crontab -l выводит ваш crontab на стандартный вывод, который вы можете перенаправить в файл. У вас может быть задание (естественно, в cron) перенаправить это в файл, который затем будет изменен и при необходимости отправлен в систему управления версиями.

person bradheintz    schedule 25.11.2008
comment
Да, но тогда нет места ни для комментариев коммитов, ни для авторства. - person John Zwinck; 25.11.2008
comment
Этот ответ ближе всего к тому, что мы в итоге сделали. Мы просто пропускаем автоматическую фиксацию в VCS, потому что хотим, чтобы поля автора и комментария были правильными. Поэтому мы отправляем электронные письма с предупреждениями, если люди забывают зафиксировать свои изменения в репозитории. Он работает нормально, но все еще может быть улучшен. - person John Zwinck; 19.01.2009

http://joey.kitenet.net/code/etckeeper/ ?

С этого сайта:

etckeeper — это набор инструментов, позволяющих хранить /etc в репозиториях git, mercurial, darcs или bzr. Он подключается к apt (и другим менеджерам пакетов, включая yum и pacman-g2) для автоматической фиксации изменений, сделанных в /etc во время обновления пакетов. Он отслеживает метаданные файлов, которые обычно не поддерживаются системами контроля версий, но которые важны для /etc, например разрешения /etc/shadow. Он довольно модульный и настраиваемый, а также прост в использовании, если вы понимаете основы работы с контролем версий.

person Daniel Bungert    schedule 25.11.2008
comment
Это нормально, но не совсем полное решение для моих нужд. Я бы сказал, любопытство, но до сих пор я кое-что реализовал сам (ничего достаточно сложного, чтобы стоило публиковать код для... в основном просто скрипт мониторинга, который проверяет crontab -l вывод по репозиторию VCS. - person John Zwinck; 03.01.2009

Если система Linux соответствует LFS (стандарт файловой системы Linux, IIRC), то /etc должен содержать только файлы конфигурации. У меня был довольно хороший опыт импорта всего /etc в CVS.

Единственная проблема в том, что только root мог фиксировать изменения, поэтому было немного сложно увидеть, кто что-то сломал. Это можно решить, назначив каждому администратору короткое имя из трех букв и установив правило, согласно которому каждый коммит должен начинаться с этого имени.

person Aaron Digulla    schedule 25.11.2008