Have You Tried IT ?

Information Technology from scratch

Git: Migracja gitosis do gitolite

Dodano przez Kategoria: Linux

Nieco ponad rok temu pisałem o instalacji git’a na własnym serwerze wraz narzędziem gitosis do zarządzania repozytoriami. Choć gitosis pojawia się w oficjalnej książce do git’a, to jest on nieco przestarzały. Sam projekt został wyczerpany i nie jest już wspierany. Mnie osobiście dodatkowo napotkały problemy z importowaniem kluczy publicznych dla użytkowników repozytorium. Gitosis nie aktualizował automatycznie pliku authorized_keys i miałem problemy z ustanawianiem dostępów do repozytoriów.

W związku z tym zdecydowałem się na spróbowanie Gitolite (następny rozdział z oficjalnej książki gita). Projekt Gitolite przynajmniej jest cały czas aktywny i poza tym ma więcej możliwości. Przede wszystkim umożliwia bardziej kompleksowe zarządzanie uprawnieniami do repozytorium (można na przykład ustawiań użytkownikom oddzielne uprawnienia na poszczególne gałęzie projektu).

Działania na serwerze

Samą migrację należałoby rozpocząć od zablokowania dostępu do repozytoriów przez „wyłączenie” pliku authorized_keys

mv /home/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys.bak

Dla pewności lepiej sobie jeszcze zrobić kopię całego katalogu usera ‚git’, najlepiej rsync albo tar (z zachowaniem właścicieli i uprawnień plików).

Następnie można przystąpić do instalacji gitolite:

sudo apt-get install gitolite

I nadania pierwszego dostępu poprzez wskazanie klucza publicznego użytkownika:

gl-setup /tmp/id_rsa.pub

Gitolite pozwala na definiowanie wielu kluczy publicznych dla tego samego użytkownika. Takie rozwiązanie jest logiczne w przypadku logowaniu się z różnych miejsc/maszyn. Dodaje się wówczas klucze publiczne o nazwach np. rumcajs@lesniczowka.pub, rumcjas@centrala-kolno.pub, rumcajs@wszopie.pub. W konfiguracji wystarczy podać nazwę użytkownika, w tym przypadku rumcajs, a będzie on miał dostęp do zdefiniowanego repozytorium bez względu po którym kluczu publicznym nastąpi zalogowanie.

Jednak na tym etapie przy definiowania pierwszego dostępu do gitolita, należy unikać używania klucza publicznego, który ma taką postać (znak @ w nazwie)

 

Działania po stronie klienta

Teraz można ściągnąć sobie w końcu repozytorium konfiguracyjne gitolite:

git clone ssh://git@moj-serwer.net:5022/gitolite-admin.git

Żeby dokonać konwersji configa z gitosys do gitolite można użyć gotowego skryptu stworzonego w ramach projektu. W tym celu można sobie ściągnąć projekt z githuba:

git clone git://github.com/sitaramc/gitolite

Znajduje się tam program convert-gitosis-conf, który załatwi sprawę migracji konfiguracji. Należy mu wskazać plik wejściowy i wyjściowy:

gitolite/convert-gitosis-conf < gitosis-admin/gitosis.conf >> gitolite-admin/conf/gitolite.conf

Na koniec należy jeszcze zweryfikować utworzony plik, dodać/zdefiniować brakują uprawnienia, przekopiować klucze publiczne do katalogu gitolite-admin/keydir/ i usunąć wpisy dla repozytorium gitosis-admin.

vi gitolite-admin/conf/gitolite.conf

Ostatni krok to commit wprowadzonych zmian i wysłanie zmian na serwer.

$ cd gitolite-admin  
$ git commit -am 'Migracja do gitolite'  
$ git push

 

1 odpowiedź

  1. Pingback: Instalacja git na serwerze

Dodaj komentarz

XHTML: Dozwolone znaczniki: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">