miércoles, 7 de septiembre de 2011

Instalacion de gitolite

Gitolite


Gitolite es una capa de control de acceso para git.
Facilita la administración de los usuarios de los distintos repositorios sin necesidad de que tengan inicio de seccion en el servidor y tambien facilita la administración de permisos permitiendo granular a nivel de rama / etiqueta / archivo / directorio, incluyendo quién puede retroceder,crear y eliminar las ramas / etiquetas.
Configura el ssh para poder acceder al servidor remotamente.

Funcionamiento


Gitolite corre como un solo usuario en el servidor, que es invocado via ssh.
El usuario con el que corre en el servidor es git o gitolite, ese usuario es real y existe en el servidor donde esta instalado gitolite.
Gitolite usa ssh para acceder a los archivos y agrega a la configuracion del ssh las claves publicas de cada usuario, de esta manera se van a diferenciar los distintos usarios.

Instalacion (ubuntu)

Instalcion con el administrador de paquetes

sudo apt-get update
sudo apt-get install gitolite


luego de instalarlo ya se crearon el usuario gitolite.
No aparece en /home/gitolite, sino que el home esta en /var/lib/gitolite

Para correr la configuracion necesito antes crear el par de claves publica y privada del usuario que va a tener permisos para cambiar las configuracion (dar permisos, crear repos, etc).
En los tutoriales que vemos por ahi hay algunos comandos que se corren en el servidor y otros en el cliente, esto puede ser asi pero tambien puede ser que el cliente y el servidor sean la misma maquina.

ssh-keygen -t rsa
Enter file in which to save the key (/home/pablo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:


Una vez creado el archivo id_rsa lo copio al directorio /tmp
Si estoy en la misma maquina
cp .ssh/id_rsa.pub /tmp/pablo.pub
Si estoy en otra maquina
scp ~/.ssh/id_rsa.pub localhost:/tmp/pablo.pub
scp ~/.ssh/id_rsa.pub pablo@localhost:/tmp/pablo.pub

una vez la clave en el servidor dentro del directorio /tmp

Cambio al usuario gitolite
sudo su gitolite

corro la configuracion
gl-setup /tmp/pablo.pub
exit

Configuracion

La configuracion del gitolite se hace por medio de un directorio que esta versionado en el git que se llama gitolite-admin

Lo que tenemos que hacer es bajar ese directorio de las configuraciones cambiar las que queramos y volvelas a subir

bajo el repo donde estan las configuraciones
git clone gitolite@localhost:gitolite-admin
git clone ssh://gitolite@localhost/test

Crear un repocitorio

vi /gitolite-admin/conf/gitolote.conf

       repo    gitolite-admin
               RW+     =   pablo

       repo    testing
               RW+     =   @all


para crear un repocitorio test agrego
       repo    test
               RW+     =   @all

Como se puede ver el repocitorio gitolite-admin solo tiene permisos de escritura y lectura el usuario pablo, que es el nombre del archivo de clave publica que le pase.

Agregar usuarios

Para agregar un usario hay que agregar la clave publica con nombre que quiero que tenga al directorio

/gitolite-admin/kedir
si hago ls voy a ver que el único usuario que hay es el que se uso para instalar.
Cuando copio una clave publica el nombre que tiene el archivo es el que voy a usar para dar permisos.
Si agrego un usuario que se llame user, copio el archvo user.pub al directorio.

Subo los cambio al servidor

Una vez hechos los cambio tengo que subir la configuracion al servidor para que los cambios se hagan efectivos.

git commit -am ‘agregure el repo test’
git push