Yannig : Administration d'un serveur SVN à l'aide de SVN
jeudi 13 juin 2013 à 14:15D'un côté c'est vrai que c'est bien la sécurité et tout ça, mais de l'autre, à chaque fois que j'ai envi de modifier un truc sur mon serveur, je suis un peu obligé de me connecter via un VPN + tunnel SSH. Comme chacun sait, je suis un gros feignant et c'est pas par gaîté de coeur que je m'y connecte. C'est donc assez naturellement que je me suis dit : et si j'utilisais un repository SVN pour faire mon administration ? Diabolique non ? De plus je gagnais instantanément un suivi de qui modifié quoi sur mon serveur SVN. Très pratique pour savoir qui taper en cas de problème.
Création du repos adminsvn
La première étape a été de créer un repository sur mon serveur qui allait me servir à ça. Pour cela, rien de plus simple, on crée un repository SVN :$ svnadmin create /var/svn/adminsvnOn crée ensuite un trunk pour faire jolie ainsi qu'un sous-répertoire admin :
$ svn mkdir --parent file:///var/svn/adminsvn/trunk/admin -m "Création d'un trunk/admin"Nous allons maintenant alimenter le fichier /etc/httpd/svn.d/droits-svn.conf afin de protéger le repository d'administration :
[groups]Alimentons maintenant nos utilisateurs dans le fichier svn.passwd :
admins_svn = yannig,cnorris
[/]
* = rw
[adminsvn:/]
# Personne ne peut lire le contenu de ce repository
* =
# Par contre, les admins SVN ont le droit de tout faire
@admins_svn = rw
$ htpasswd -nb yannig mdpdeyannig > /etc/httpd/svn.d/svn.passwdAjoutons maintenant ces fichiers dans le repository avec la commande suivante :
$ htpasswd -nb cnorris chucknorrisnapasbesoindemdp >> /etc/httpd/svn.d/svn.passwd
$ svn add svn.passwd droits-svn.conf
Mise en place du mécanisme de post commit
Procédons maintenant à un checkout de ce repository SVN dans un coin de notre serveur (en tant qu'utilisateur apache ou www-data selon que vous soyez sous RH ou Debian like) :$ svn co file:///var/svn/adminsvn/trunk/admin /etc/httpd/svn.dNous allons maintenant mettre en place un mécanisme de mise à jour de ce checkout. Rendez-vous dans le répertoire /var/svn/adminsvn/hooks et créons un fichier shell post-commit avec la commande suivante :
echo "svn up /etc/httpd/svn.d" > post-commitComme vous pouvez le voir, le script n'est pas super complexe.
chmod +x post-commit
Si vous n'avez pas utiliser le bon utilisateur pour faire le checkout, vous pouvez modifier les droits avec la commandes suivantes :
chown -R apache:apache /etc/httpd/svn.d
Déclaration d'un ensemble de repository dans apache
Déclarons maintenant la racine contenant le repository dans apache en créant le fichier /etc/httpd/conf.d/svn.conf avec le contenu suivant :Un arrêt/relance de l'ami Apache et nous voilà prêt pour la suite.
DAV svn
SVNParentPath /var/svn/
SVNListParentPath On
Options +Indexes
AuthType Basic
AuthName "SVN"
# Gestion authentification
AuthBasicProvider file
AuthzSVNAccessFile /etc/httpd/svn.d/droits-svn.conf
AuthUserFile /etc/httpd/svn.d/svn.passwd
Require valid-user
NB : Il est bien sûr évidant que vous devez disposer de l'extension mod_dav_svn. Sous RHEL, vous devrez lancer la commande yum suivante pour procéder à l'installation :
Sous Debian, ce module s'appelle libapache2-svn. Vous devrez dans ce cas utiliser la commande suivante :
yum install mod_dav_svn
apt-get install libapache2-svn
Test de notre mécanisme
Cette partie est plus simple puisqu'elle va consister à faire des commits dans notre repository. Pour se faire, vous devez donc vous munir d'un client SVN. En tant que vieux barbu, je fais ça en ligne de commande depuis mon poste Linux :Éditons maintenant votre fichier droits-svn.conf de la manière qu'il nous plaira et lançons le commit :
svn co --username yannig http://monserveursvn/svn/adminsvn/trunk ~/adminsvn
Allons maintenant faire un tour sur notre serveur pour vérifier que le fichier droits-svn.conf a bien été mis à jour :
$ svn diff
Index: changelog.txt
===================================================================
--- droits-svn.conf (revision 1)
+++ droits-svn.conf (working copy)
@@ -1,3 +1,4 @@
-admins_svn = yannig,cnorris
+admins_svn = yannig,cnorris,nobody
[/]
* = rw
$ svn ci -m "Ajout de l'utilisateur nobody."
Sending droits-svn.conf
Transmitting file data .
Committed revision 2.
La modification a bien été prise en compte. Le mécanisme fonctionne bien comme prévu !
$ grep nobody /etc/httpd/svn.d/droits-svn.conf
admins_svn = yannig,cnorris,nobody
Original post of Yannig.Votez pour ce billet sur Planet Libre.
Articles similaires
- Jos : Ubuntu – Connaître les dernières commandes lancées sur le système (05/02/2010)
- Jos : Mettre en place SSH sur Ubuntu (08/09/2009)
- HacKurx : wajig – Administration simplifiée des paquets debian (17/11/2011)
- TheGlu : Apachetop, ou comment observer la vie trépidante de son serveur apache en direct. (11/01/2008)
- Oncle Tom : Configuration d’Apache, MySQL et PHP à base de liens symboliques (11/12/2008)