1 votes

synchroniser deux checkouts SVN locaux

Aperçu rapide du problème. J'ai un site web qui est dans SVN et extrait sur 2 serveurs différents pour l'équilibrage de charge. Il s'agit d'un site Drupal et tout, à part le répertoire des actifs et des fichiers, est extrait localement sur les serveurs.

Maintenant, lors d'une mise à jour, je dois mettre à jour manuellement les deux checkouts locaux (svn up), ce qui est sujet à des erreurs et entraînera encore plus de surcharge si nous décidons d'ajouter un autre serveur web à la rotation.

En résumé, je dois trouver un moyen d'automatiser la synchronisation des deux caisses locales afin de n'avoir qu'une seule mise à jour à faire sur un serveur et que tout soit synchronisé.

Les choses que j'ai essayées :

  • somme md5 du répertoire sur le serveur 1 et par SSH sur le serveur 2 (à l'exclusion des répertoires .svn) en utilisant une commande find, puis en exécutant svn ups sur le serveur 2 en utilisant les résultats de diff comme arguments. Cela me donne toujours les mêmes fichiers qui sont différents.

    ssh $TARGET "cd "$SVN_TARGET" && find . -name .svn -prune -o -type f -print0 | xargs -0 md5sum" >> /tmp/server2.sums

    cd $SVN_SOURCE && find . -name .svn -prune -o -type f -print0 | xargs -0 md5sum >> /tmp/server1.sums

    diff /tmp/server1.sums /tmp/server2.sums | cut -d"." -f2 | xargs -i ssh $TARGET "su www-data -c 'svn up /dir/to/svn/repo/{} --username \"*******\" --mot de passe \"******\"'"

  • en utilisant svn info et ensuite svn diff avec la révision de la tête pour me donner tous les fichiers modifiés. Le problème est que l'identifiant de la révision locale n'est pas égal à celui de la révision principale sur le serveur SVN, même s'il est à jour.

Toute aide est appréciée et je m'excuse pour le mur de texte :)

0voto

Timbo Points 14117

Et pourquoi pas une entrée crontab sur chaque hôte qui exécute un script toutes les cinq minutes ? Le script pourrait mettre à jour le dépôt svn et faire tout post-traitement jugé nécessaire... .

Ou vous pourriez avoir un crochet post-commit dans subversion qui déclenche le déploiement vers les deux clients... .

0voto

Ted Mielczarek Points 1996

Que diriez-vous d'un travail de contrôle exécuté dans la crontab sur l'un des hôtes qui fait une info svn pour déterminer la révision, qui fait ensuite une mise à jour svn de cette révision et en même temps exécute une mise à jour ssh svn de la même révision sur l'autre hôte ?

0voto

Maxwell Points 5016

Si vous utilisez un système d'exploitation linux, vous pouvez utiliser DRBD pour synchroniser les données entre les deux serveurs SVN au niveau du bloc sans se soucier de Subversion.

0voto

Sveatoslav Points 101

Je recommande vivement d'utiliser capistrano pour le déploiement du code. Voir les tutoriels suivants pour l'intégration avec Drupal : premièrement y deuxième .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X