Crontab контроля версий?
-
11-07-2019 - |
Вопрос
У меня есть несколько десятков машин Linux с cron
, и я хотел бы поместить crontabs в какую-то систему контроля версий. Для управления исходным кодом я использую Mercurial ( hg
), так что это было бы идеально, но если есть какая-то другая система, которая лучше подходит для этой задачи, я бы ее рассмотрел.
Один аспект, характерный для моей ситуации, заключается в том, что все crontabs принадлежат обычному пользователю (не реальному человеку, а логину-заполнителю "services"). Мне бы хотелось, чтобы в историю изменений входил реальный автор каждого изменения, а не специальная учетная запись, в которой фактически выполняются задания cron.
Решение
crontab -l выводит ваш crontab на стандартный вывод, который вы можете перенаправить в файл. У вас может быть задание (в cron, естественно) перенаправить его в файл, который затем передается в файл и при необходимости передается в систему контроля версий.
Другие советы
http://joey.kitenet.net/code/etckeeper/ ? р>
С этого сайта:
etckeeper - это набор инструментов, позволяющих хранить / etc в репозитории git, mercurial, darcs или bzr. Он подключается к apt (и другим менеджерам пакетов, включая yum и pacman-g2) для автоматической фиксации изменений, внесенных в / etc во время обновления пакетов. Он отслеживает метаданные файлов, которые обычно не поддерживаются системами контроля версий, но это важно для / etc, например, для разрешений
/ etc / shadow
. Он достаточно модульный и настраиваемый, а также простой в использовании, если вы понимаете основы работы с контролем версий.
Если система linux следует LFS (стандарт файловой системы linux, IIRC), то / etc должна содержать только файлы конфигурации. Я имел довольно хороший опыт, импортировав весь / etc в CVS. Р>
Единственная проблема заключается в том, что только root может фиксировать изменения, поэтому было немного трудно понять, кто что-то сломал. Эту проблему можно решить, назначив каждому администратору трехбуквенное короткое имя и установив правило, согласно которому каждый коммит должен начинаться с этого имени.