Suivi via SVN des configurations serveurs

histoire de relancer la discussion

But : garder un historique des modifications des fichiers de configuration de chaque serveur. Pour

Questions et problèmes à résoudre

Préservation des uid.gid de chaque fichier

Repository central ou propre à chaque machine ?

Proposition de méthodologie pour la gestion des /etc en svn

Proposition de schéma global, suite à une 'tite discussion avec Thomas

mini doc svn à faire

ATTENTION SI VOUS VOULEZ TESTER, NE LE FAITES PAS SUR UN VRAI SERVEUR :BR COMME TOUTE EXPERIMENTATION SUR UN SERVEUR EN PRODUCTION, UNE MAUVAISE MANIPULATION PEUT DETRUIRE VOTRE /etc !!

Création du dépôt svn (à faire sur chaque serveur)

Standardiser avec le même répertoire sur chaque serveur (dans un repertoire /srv/svn/, par exemple)

Plutôt travailler sur une copie de etc, pour limiter les accidents, et ne pas polluer ce repertoire avec les .svn/

# création du dépôt
% svnadmin create /srv/svn 
# racine du dépôt
% svn mkdir file:///tmp/svn/base -m "création" 
# pour ajouter la racine au système svn
% svn co file:///tmp/svn/base . 
# faire une première copie
% rsync -av /etc/ /var/backups/etc/
# ajouter le répertoire /etc au système svn
% cd /var/backups
% svn -N add etc
% svn propedit svn:ignore etc
<lister les fichiers à ne pas faire gérer par svn, pour diverses raisons (par exemple : mtab, ou passwd, passwd-, shadow, shadow- sur certains serveurs où ce suivi n'est pas voulu)>
# ajouter à svn le contenu du /var/backups/etc
% svn --force add etc/ 
# premier commit : les fichiers sont effectivement enregistrés dans svn
% svn commit -m "version initiale"

Les des fichiers à ignorer, et pourquoi

Vérification nocturne qu'aucun commit n'a été oublié

% cat >/etc/cron.daily/verification-svn
#!/bin/sh
rsync -a --delete --exclude .svn /etc/ /var/backups/etc/
cd /var/backups/etc
svn status
% chmod 755 /etc/cron.daily/verification-svn

Aprés une série de modification dans /etc

% cat >/usr/local/bin/commmit-conf
#!/bin/bash

if [ -n "$SUDO_USER" ] ; then
  USER="$SUDO_USER"
fi

if [ -z "$USER" -o "$USER" = "root" ] ; then
  echo 'tu es qui, toi ?'
  exit
fi

rsync -a --delete --exclude .svn /etc/ /var/backups/etc/

cd /var/backups/etc

svn commit --username "$USER" $*

Revenir en arrière

attention aux permissions

Vérifier les dernières modifications

Actions suivantes