This is an old revision of the document!
Table of Contents
Serveur Bazaar avec authentification SSH
Cette page décrit les étapes à suivre pour mettre en place un serveur Bazaar avec une authentification via SSH afin de gérer un ou plusieurs dépôts de code.
Note : Toutes les commandes qui suivent sont à effectuer en root.
Configuration du serveur SSH
Lorsque l'on utilise une distribution pour un serveur, on a l'habitude d'installer un serveur SSH (si cela n'est pas fait durant l'installation).
aptitude install openssh-server
Par défaut, ce serveur va écouter sur le port 22. Il est conseillé de garder cette configuration pour coupler SSH à Bazaar. La configuration du serveur ne sera pas abordée dans cette page (car on sait tous faire ça ).
Configuration de Bazaar
Installation
L'installation de Bazaar se résume à l'installation d'un seul et unique paquet.
aptitude install bzr
La commande bzr fait appel à un programme relativement simple. Toutes les fonctionnalités sont en fait implantées par des plugins que le programme principal va utiliser. Une complétion automatique est disponible pour compléter automatiquement les arguments à passer à bzr. Il est de plus possible de rajouter des plugins personnels en les mettant dans le répertoire /home/<utilisateur>/.bazaar/plugins.
Bazaar smart server
Tout comme Subversion, par exemple, Bazaar possède un serveur qui lui est propre. C'est ce “serveur intelligent” qui permet d'utiliser le gestionnaire de versions en mode bzr+ssh. Lancer un serveur Bazaar est plutôt simple. Une seule ligne de commande suffit.
bzr serve --directory=/chemin/vers/la/racine/des/projets/
Mais une utilisation à la ligne de commande peut s'avérer assez ennuyeuse. On va donc par la suite se simplifier la vie. Avant tout, il faut préparer le terrain pour que tout soit prêt dès le lancement du smart server. Comme on peut le voir dans la commande ci-dessus, il faut créer une racine qui va contenir par la suite tous les projets/ Ainsi, ces derniers seront tous accessibles via Bazaar. Ici, la racine sera /var/bzr.
mkdir /var/bzr
Ensuite, on pourra lancer le serveur. Cependant, il faut être certain qu'il soit accessible via l'extérieur. La configuration du firewall est donc une étape qui (je l'espère) est indispensable. Il faut donc ouvrir le port 4155 en entrée et sortie seulement en TCP. Il est extrêmement intéressant pour des questions d'administration de pouvoir lancer, arrêter, redémarrer le serveur Bazaar comme les autres serveurs (Apache par exemple). C'est-à-dire via une commande du genre :
/etc/init.d/service start|stop|restart
Parce que le serveur n'est en fait qu'un plugin rattaché à Bazaar et qu'il n'est pas installé comme un serveur classique, il faut créer un script bazaar_server dans le répertoire /etc/init.d. Ce script nous permettra alors de gérer le serveur facilement.
### BEGIN INIT INFO # Provides: bazaar_server # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO #!/bin/sh # Path to root of repo tree BZRROOT=/var/bzr/ # Listening port (default = 4155) PORT=4155 # Logs file LOG_FOLDER=/var/log/bzr LOG_FILE=$LOG_FOLDER/smart_server.log # Arguments to start the server ARGS="serve --port=$PORT --directory=$BZRROOT" bzr_smart_server_process() { pgrep -fl "bzr $ARGS" } bzr_smart_server_status() { process=`bzr_smart_server_process` listening=`netstat -nl | grep -e ":$PORT "` if [ -z "$process" ]; then echo "Bazaar smart server is *not* running." else echo "Bazaar smart server is running." if [ -z "$listening" ]; then echo "The server is *not* listening on port $PORT." else echo "The server is listening on port $PORT." fi fi } bzr_smart_server_start() { echo "Starting Bazaar smart server." # Make sure the log folder is created if [ ! -d $LOG_FOLDER ]; then mkdir -p $LOG_FOLDER fi echo "" > $LOG_FILE bzr $ARGS > $LOG_FILE 2>&1 & bzr_smart_server_status } bzr_smart_server_stop() { echo "Stopping Bazaar smart server." pkill -f "bzr $ARGS" bzr_smart_server_status } case "$1" in start) bzr_smart_server_start ;; stop) bzr_smart_server_stop ;; status) bzr_smart_server_status ;; restart) bzr_smart_server_stop bzr_smart_server_start ;; *) echo "Usage: $0 { start | stop | status | restart }" exit 1 ;; esac
L'en-tête du script va permettre de contrôler son exécution au démarrage de la machine. En effet, on va également ajouter ce script aux runlevels, afin de ne pas être obligé de le lancer et l'arrêter manuellement à chaque redémarrage de la machine. Pour cela on utilise la commande ci-dessous.
update-rc.d bazaar_server defaults
Les quatre variables principales du script (celles dont les noms sont en majuscules) sont éventuellement à modifier. Elles concernent la racine des projets à utiliser, le port utilisé par le serveur et le fichier dans lequel seront enregistrés les logs. On rend enfin le script exécutable et il est alors possible de lancer, redémarrer, arrêter le serveur mais aussi d'en voir le statut.
chmod +x /etc/init.d/bazaar_server /etc/init.d/bazaar_server start /etc/init.d/bazaar_server stop /etc/init.d/bazaar_server restart /etc/init.d/bazaar_server status