etckeeper
À quoi il sert
etckeeper transforme /etc en dépôt Git (Mercurial, Bazaar et Darcs sont aussi pris en charge, Git est le défaut sur Debian et Ubuntu). Il s'accroche au gestionnaire de paquets pour enregistrer un commit avant chaque opération APT (les modifications manuelles en attente) et un autre après (ce qu'ont changé les paquets), et un minuteur quotidien enregistre ce qui aurait été oublié. Il conserve dans le fichier /etc/.etckeeper les métadonnées que Git ignore : propriétaires, groupes et droits. sudo etckeeper commit "message" enregistre une modification manuelle ; sudo git -C /etc log -p montre l'historique.
Quand le choisir
Sur un serveur administré, au moins en partie, à la main : un serveur repris dont on ne connaît pas l'histoire, ou une machine qui n'est pas encore sous un outil de gestion de configuration. Il répond à la question « qu'est-ce qui a changé dans /etc depuis mardi ? ». Quand la configuration est décrite dans un dépôt et déployée par Ansible, le dépôt de l'équipe devient la référence, et etckeeper reste utile pour repérer une modification faite hors de ce circuit.
Points d'attention
- L'installer modifie la machine : sur un serveur repris, faites-le après l'état des lieux, et notez-le comme premier changement.
/etccontient des secrets (clés privées, mots de passe, fichiershadow) : le dépôt local doit rester lisible par root seul, et ne poussez jamais vers un dépôt distant que vous ne maîtrisez pas totalement.- Un commit automatique ne dit pas pourquoi : enregistrez vous-même vos modifications avec un message explicite, et tenez un journal des changements.
- Les fichiers volumineux ou changeants qui n'ont rien à faire dans l'historique s'excluent par le
.gitignorede/etc. - etckeeper ne couvre que
/etc: les données,/usr/localet les crontabs de/var/spool/cronrelèvent d'autres mécanismes.
Par où commencer
La leçon Prendre en charge un serveur du cours Linux : administration système, qui dresse l'état des lieux de sig-app-1 puis installe etckeeper comme premier changement documenté. Puis la documentation du projet et le fichier README.md installé avec le paquet.