vendredi 30 mars 2012

Gitosis et Git pour une petite équipe sur Ubuntu serveur : note d'installation

Je parle trop de politique en ce moment, c'est profondément inutile. Faisons donc un peu d'utile : Gitosis et Git.

Plutôt habitué à SVN le côté décentralisé de Git m'intéressait, ça m'évitait d'être trop dépendant d'un serveur pour pouvoir versionner mon travail. Git apporte à mon sens à un système de gestion de version (SCM) une distinction importante dans les besoins à satisfaire :

  • Permettre de versionner le code source d'un programme pendant son écriture (pour associer les travaux à des corrections de bugs et éventuellement permettre de revenir en arrière quand le besoin se fait sentir
  • Permettre à une équipe de collaborer sur un même projet
En rendant le développeur dépendant d'un serveur central, SVN avait tendance à lier un peu trop les deux à mon goût.

Gitosis est simplement une version serveur de Git vous facilitant la vie. Voici donc quelques notes d'installation pour moi plus tard, et pour vous qui passez par là. Je n'ai pas la prétention de réinventer la poudre, il y a des chances que ces quelques lignes contiennent des imprécisions (en particulier sur l'aspect clé de cryptage où je ne suis pas un expert), si des sujets vous intéressent je vous invite donc à creuser.


Attention : Gitosis est un projet abandonné, il serait plus prudent pour vous d'utiliser Gitolite. Cependant n'ayant pas eu cette information au préalable je suis resté sur Gitosis pour mes tests.

Tout d'abord le système fonctionne sur la base de SSH pour la sécurisation des transactions. Les utilisateurs (ici les développeurs) doivent donc avoir leur clé SSH de configurée :

Ainsi si vous utilisez un système *nix (de mon côté Ubuntu côté serveur ou Mac OS pour ma machine perso) vous pouvez vérifier que votre home contienne un fichier id_rsa (clé privée et donc secrète) et id_rsa.pub (clé publique) dans le répertoire .ssh. Ainsi si ~/.ssh/id_rsa.pub et ~/.ssh/id_rsa existent vous n'avez rien à faire. Sinon vous pouvez les créer en exécutant la commande qui est faite pour :
  • ssh-keygen -t rsa

L'usage d'une passphrase (mot de passe un peu long) sécurise un peu la chose mais reste optionnel. Pour la petite histoire la clé publique de A va être communiquée à B, B va pouvoir ainsi être sûr qu'il communique bien avec A tout au long des communication en permettant de décrypter les messages créés grâce à la participation clé privée.

L'installation de Gitosis se fait ensuite en quelques lignes. Installation de Gitosis (et de GIT au passage) :
  • sudo aptitude install gitosis git-core

Initialisation d'un utilisateur pour gitosis (je ne suis pas sûr de ce que fait cette ligne, pour moi, elle créé un utilisateur et permet de s'y connecter par la clé que nous avons généré) :
  • sudo -H -u gitosis gitosis-init < ~/.ssh/id_rsa.pub

Attention vous avez deux fichiers : id_rsa qui est votre clé privé (à garder au chaud, d'où son nom), le fichier id_rsa.pub est votre clé publique. Les deux vont de paires et la clé RSA publique peut-être diffusée et vous permettra de vous connecter à un système en utilisant la clé privée lui correspondant.

On clone le repository permettant de gérer votre Gitosis, en gros ce répertoire est un repository GIT, vous y effectuer vos modifications et l'envoie de celle-ci modifie le comportement de votre serveur.
  • git clone gitosis@localhost:gitosis-admin.git /tmp/gitosis-admin

Si vous arrivez là sans encombre c'est merveilleux ! Et c'est presque fini. Le repository contient : un fichier gitsosis.conf et un dossier keydir.

gitosis.conf vous permet de gérer vos dépôts et les utilisateurs qui peuvent y accéder, un petit exemple :

[group gitosis-admin]
writable = gitosis-admin
members = root@myhost

[gitosis]


[group myprojectrepo]
writable = myprojectrepo
members = tom john


Le premier block concerne le repository utilisé pour l'administration de Gitosis (gitosis-admin), sans trop rentré dans les détails l'attribut writable désigne un repository sur lequel le groupe sousjacent à des droits d'écriture. Ainsi on comprendre que le groupe similaire lié à myprojectrepo concerne un second repository, si vous ajouté quelques lignes comme ce groupe vous créez donc un nouveau repository avec pour membres tom et john...

Tom et John me direz-vous ? Comment le système fait-il le lien avec des utilisateurs ?

C'est là qu'arrive le dossier keydir, ce dossier va simplement contenir les clés de vos utilisateurs, le fichier id_rsa.pub de tom va devoir y être inséré sous le nom tom.pub. Vous l'avez devinez vous devrez rajoutez un fichier john.pub contenant la clé de l'utilisateur John, vous pouvez d'ailleurs constaté qu'un fichier root@myhost.pub contient la clé id_rsa.pub donnée à l'initialisation de gitosis.

Vous avez un repository gitosis-admin cloné, votre fichier gitosis.conf modifié et vos deux clés ajoutées à keydir, il ne vous reste plus qu'à commiter cela en local :
  • git add keydir/tom.pub
  • git add keydir/john.pub
  • git commit -a -m "My first repo is here"
Puis vous envoyez tout cela sur votre serveur :
  • git push
C'est fini, vous pouvez accéder à votre nouveau repository :
  • git clone gitosis@myhostname:myprojectrepo.git
Il est possible qu'une erreur se produise lors du push car votre repository était vide, après avoir des fichiers il vous faut utilisé la commande suivante :
  • git push origin master


Aucun commentaire:

Enregistrer un commentaire

Related Posts with Thumbnails