Intitulé du document : Comment synchroniser des fichiers de configuration entre 2 machines avec Unison ?
Localisation : http://www.opendoc.net/comment-synchroniser-fichiers-configuration-avec-unison
Auteur : Alexandre Bray
Vos questions : support@opendoc.net
Date de création : 2010/12/22
Date de modification : 2010/12/22
Source : http://wiki.mandriva.com/fr/Unison
http://doc.ubuntu-fr.org/unison
Tags :
Etat de la documentation : 90% completed
Vous souhaitez contribuer : Comment soutenir opendoc ?
Informations : Quelle est notre démarche ?
Licence : Contrat Creative Commons
opendoc.net est mis à disposition selon les termes de la licence Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 non transcrit.

Comment synchroniser des fichiers de configuration entre 2 machines avec Unison ?

1 Présentation

source : http://fr.wikipedia.org/wiki/Unison_%28logiciel%29

Unison est un logiciel de synchronisation de fichiers populaire, doté également de fonctionnalités lui permettant de créer et gérer des sauvegardes de répertoires. La synchronisation étant bidirectionnelle (en ce sens que les modifications d'un répertoire sont reportées sur l'autre et vice-versa), il est utilisé pour garder à niveau des répertoires se trouvant en même temps sur deux machines différentes.

Unison est un logiciel libre sous licence GPL. Il fonctionne sur un large spectre de systèmes d'exploitation (Windows, Linux, Mac OS X), permettant ainsi de synchroniser des fichiers de différents systèmes d'exploitation.

Le but de cette documentation n'est pas d'explorer tous les outils de synchronisation (unison, rsync, csync … ) ni leurs avantages et inconvénients. Je vais essayer de répondre à un besoin auquel tout administrateur système a été confronté : la synchronisation de configuration entre 2 machines.

2 Contexte du besoin : Synchronisation de configurations pour un serveur Web

Dans un environnement professionnel où l'on doit de fournir un service de qualité et sans interruption, il est préférable de ne pas effectuer des tests en production. Pour cela une machine de “développement” permet d'effectuer des tests, valider le bon fonctionnement de l'applicatif. Une fois cette partie validée, l'application, la configuration, … sont synchronisées sur les machines de production. Nous sommes dans un cas idéal, suivant le besoin et les moyens, un tel dispositif ne peut être mis en place.

Imaginons un contexte simple, vous êtes webmaster et vous êtes en charge de mettre en place une infrastructure (load balancing, ssl …) avec des applications web (cms, webmail …). Je ne rentre pas ici dans les notions d'infrastructures, les contextes peuvent être différents. Cependant vous possédez 2 machines, une “active” et l'autre “backup”. Vous souhaitez effectuer des tests sur la machine “backup” et synchroniser les modifications sur la machine “active”. L'inverse peut-être aussi vrai. Vous pouvez réaliser ces changements grâce à Unison.

3 Installation d'Unison

pour debian :

apt-get install unison

4 Configuration d'Unison

  1. Attention la version d'Unison doit être identique sur les 2 machines !
  2. Avant de débuter la configuration d'Unison, veuillez contrôler que le compte root de la machine “backup” peut se connecter par clés sur la machine “active” et inversement.

4.1 Tests de connexion

Tester que vous pouvez vous connecter en ssh sur l'autre machine. Unison peut aussi être utilisé en mode socket, mais nous le détaillerons pas ici car ce mode fonctionnement est moins sécurisé.

web-bak:~# ssh root@web-act sudo unison -version
unison version 2.27.57

4.2 Profils

Dans votre “home directory”, vous trouvez un répertoire caché ”.unison”. S'il n'est pas créé, créez le. Dans ce répertoire vous pouvez créer des profils qui peuvent correspondre à vos différents besoins.

Exemple :

etc.prf pour synchroniser le /etc
www.prf pour synchoniser le /var/www

4.3 Synchronisation de répertoires

On souhaite créer un profil afin de synchroniser des répertoires précis. Voici un exemple :

times = true
owner = true
group = true

root = /etc/
root = ssh://root@web-act//etc/
path = ./apache2/
path = ./php5/
path = ./nagios3/
path = ./nagios-plugins/
path = ./exim4/

logfile = /var/log/unison.log

Explications :

times conserve la date de création
owner conserve le propriétaire
group conserve le groupe
root le premier indique la source, le second la destination.
path indique le répertoire à sauvegarder
logfile indique l'emplacement de stockage des logs

4.4 Test de synchronisation

Nous souhaitons synchroniser le dossier “apache2”.

unison etc
...
UNISON 2.27.57 started propagating changes at 13:37:40 on 22 Dec 2010
[BGN] Copying ./apache2/apache2.conf from /etc to //web-act//etc
[BGN] Copying ./apache2/conf.d from /etc to //web-act//etc
[BGN] Copying ./apache2/envvars from /etc to //web-act//etc
[BGN] Copying ./apache2/httpd.conf from /etc to //web-act//etc
[BGN] Copying ./apache2/mods-available from /etc to //web-act//etc
[BGN] Copying ./apache2/mods-enabled from /etc to //web-act//etc
[BGN] Copying ./apache2/modsecurity from /etc to //web-act//etc
[BGN] Copying ./apache2/ports.conf from /etc to //web-act//etc
[BGN] Copying ./apache2/sites-available from /etc to //web-act//etc
[BGN] Copying ./apache2/sites-enabled from /etc to //web-act//etc
[BGN] Copying ./apache2/ssl from /etc to //web-act//etc
[BGN] Copying ./apache2/ssl.old from /etc to //web-act//etc
[END] Copying ./apache2/modsecurity
[END] Copying ./apache2/apache2.conf
[END] Copying ./apache2/envvars
[END] Copying ./apache2/httpd.conf
[END] Copying ./apache2/ports.conf
[END] Copying ./apache2/conf.d
[END] Copying ./apache2/mods-available
[END] Copying ./apache2/mods-enabled
[END] Copying ./apache2/sites-enabled
[END] Copying ./apache2/sites-available
[END] Copying ./apache2/ssl
UNISON 2.27.57 finished propagating changes at 13:39:01 on 22 Dec 2010:


Vous pouvez constater que la synchronisation a été effectuée. Néanmoins, testons une évolution, imaginons que j'ai ajouté un “VirtualHost” sur la machine “web-bac”, théoriquement seul un fichier devrait être synchronisé.

web-bak:~# unison etc
Contacting server...
Connected [//web-act//etc -> //web-bak//etc]

local          web-act      
changed  ---->            ./apache2/sites-available/0-site  [f] 

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.27.57 started propagating changes at 13:52:42 on 22 Dec 2010
[BGN] Updating file ./apache2/sites-available/0-site from /etc to //web-act//etc
[END] Updating file ./apache2/sites-available/0-site
UNISON 2.27.57 finished propagating changes at 13:52:43 on 22 Dec 2010


Saving synchronizer state
Synchronization complete  (1 item transferred, 0 skipped, 0 failures)

Opération réussie. Cependant il est impératif d'avoir les mêmes “profils” Unison sur les 2 machines. De cette manière vous pouvez lancer la commande sur la machine “active” ou “backup” avec le même résultat.

4.5 Comment utiliser Unison avec sudo

Si vous aussi n'aimez pas vous connecter directement en root (recommandé) sur un machine mais que vous préférez passez par un utilisateur simple et utiliser les “pleins pouvoirs” temporairement, cette configuration ne fonctionnera pas.


Pour résoudre ce problème, il faut utiliser l'option “servercmd” :

 servercmd = /usr/bin/sudo /usr/bin/unison 

De cette manière votre utilisateur lancera cette commande avant de donner les bon arguments à Unison.

4.6 Comment effectuer une synchronisation unilatérale avec Unison

Pour ma part j'utilise cette option afin de jamais me tromper. Si Unison est exécuté sur une machine (active ou backup), la configuration est forcément envoyé sur l'autre. Pour cela il faut utiliser l'option “force

 force = /etc 
solutions/comment-synchroniser-fichiers-configuration-avec-unison.txt · Dernière modification: 2013/07/14 17:19 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki