Controllo revisione Crontab?
-
11-07-2019 - |
Domanda
Ho alcune decine di macchine Linux che eseguono cron
e mi piacerebbe inserire i crontab in una sorta di sistema di controllo delle revisioni. Per il controllo del codice sorgente uso Mercurial ( hg
), quindi sarebbe l'ideale, ma se ci fosse un altro sistema più adatto a questo compito lo prenderei in considerazione.
Un aspetto specifico della mia situazione è che tutti i crontab appartengono a un utente comune (non una persona reale, ma un segnaposto "servizi" e login). Vorrei che la cronologia delle revisioni includesse l'autore effettivo di ogni modifica, anziché l'account speciale in cui vengono effettivamente eseguiti i processi cron.
Soluzione
crontab -l esegue il dump del crontab sullo standard output, che puoi reindirizzare a un file. Potresti avere un lavoro (in cron, naturalmente) per reindirizzare questo su un file che viene quindi diffuso e trasferito al controllo del codice sorgente se necessario.
Altri suggerimenti
http://joey.kitenet.net/code/etckeeper/ ?
Da quel sito:
etckeeper è una raccolta di strumenti per lasciare / etc in un repository git, mercurial, darcs o bzr. Si collega a apt (e ad altri gestori di pacchetti tra cui yum e pacman-g2) per eseguire automaticamente il commit delle modifiche apportate a / etc durante gli aggiornamenti del pacchetto. Tiene traccia dei metadati dei file che normalmente i sistemi di controllo revison non supportano, ma questo è importante per / etc, come le autorizzazioni di
/ etc / shadow
. È abbastanza modulare e configurabile, ma allo stesso tempo semplice da usare se si comprendono le basi per lavorare con il controllo di revisione.
Se il sistema linux segue LFS (linux filesystem standard, IIRC), allora / etc dovrebbe contenere solo file di configurazione. Ho avuto una buona esperienza importando tutto / etc in CVS.
L'unico problema è che solo root può eseguire il commit delle modifiche, quindi è stato un po 'difficile vedere chi ha rotto qualcosa. Ciò può essere risolto assegnando ad ogni amministratore un nome breve di 3 lettere e impostando la regola che ogni commit deve iniziare con questo nome.