gitolite

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Gitolite je administrační systém pro správu git repozitářů založený na gitu

Administrace

Administrace systému gitolite se provádí prostřednictvím git repozitáře s názvem gitolite-admin Ten obsahuje dva podadresáře:

  • keydir - adresář pro veřejné ssh klíče uživatelů
  • conf - adresář pro konfigurační soubory

Hlavním konfiguračním souborem je soubor gitolite-admin/conf/gitolite.conf

  • zakládání nových repozitářů
  • přidávání uživatelů
  • správa přístupu do repozitářů

Práva k dílčí administraci repozitářů (resp. skupinám repozitářů) lze delegovat pověřeným uživatelům

Správce

Uživatelé

Uživatelé se do systému přidávají tak, že se do adresáře keydir nakopíruje veřejný ssh klíč uživatele, uložený do souboru, jehož název tvoří jméno uživatele a přípona ".pub"

Poznámka Gitolite používá několik systémově definovaných uživatelů:
  • all - do skupiny all spadne každý anonymní uživatel - tj. uživatel bez platného ssh klíče
  • gitweb - uživatel, pod kterým gitolite provádí úpravy konfigurace pro gitweb
  • daemon - uživatel, pod kterým gitolite provádí úpravy konfigurace, které vyžaduje git-daemon

Repozitáře

Přidání a správa uživatelských přístupů do repozitářů se provádí tak, že se do konfiguračního souboru napíše napíše na řádek začínající kódem "repo" název adresáře a pod něj se přidá odsazený seznam s nastavením přístupových práv uživatelům

Poznámka
@skupina_uzivatelu = user1 user2 user3
repo nejaky_repozitar
    RW+ = delegovany_spravce
    RW  = skupina_uzivatelu
    R   = @all

Práva

R
Uživatel může repozitář pouze stáhnout
RW
Uživatel může repozitář stáhnout, může pracovat s jeho obsahem, ale nemůže zakládat nové soubory
RW+
Uživatel může zakládat nové soubory

Skupiny

Uživatele i repozitáře lze v konfiguraci seskupovat do skupin. Se skupinami se pak pracuje obdobným způsobem, jako by šlo o jeden repozitář, resp. jednoho uživatele.

Definice skupiny se provádí přidáním zavináče před jméno skupiny a přiřazením názvů repozitářů či jmen uživatelů, které má zastupovat

Poznámka
@skupina_uzivatelu = user1 user2 user3

Delegovaná správa repozitářů

Delegování administrace - předání administrace k vybranému repozitáři či skupině repozitářů, se provádí tak že se všem uživatelům, na která mají být práva delegována nastaví k adresáři gitolite-admin právo RW.

A následně se jim "přidělí" práva k souborům do nichž budou zapisovat nastavení práv k repozitářům delegované skupiny. Tyto soubory, ani podadresář se netvoří automaticky, ale musí si je delegovaní uživatelé zakládat sami, po naklonování repozitáře gitolite-admin.

Upozornění Delegovaná správa repozitářů znamená, že vybraní uživatelé mohou v rámci delegované skupiny již založených repozitářů spravovat přístupová práva uživatelům se zavedeným veřejným klíčem. Tzn. přidávat či odebírat přístup, nebo měnit úroveň přístupu. Na rozdíl od správce, (a uživatelů s právy RW+ pro repozitář gitolite-admin) delegovaní uživatelé nemohou importovat klíče, ani zakládat nové repozitáře.

Instalace a základní konfigurace

Instalace gitolite byla provedena z distribučních balíků přes balíčkovací systém APT

git:~# apt-get install gitolite

Po instalaci byl na stroji git založen uživatel git, který zatím v systému neexistoval

git:~# adduser git

Na stroj git byl nakopírován veřejný ssh klíč pro přístup administrátora (standardně je uložený v souboru ~/.ssh/id_rsa.pub), který bude provádět základní administraci gitolite. Tento soubor (s klíčem) se na server uložil do dočasného souboru /tmp/admin.pub. V podstatě je však úplně jedno kam se tento klíč nakopíruje. Podstatné je, aby jeho název odpovídal identifikátoru hlavního administrátora gitolite. Tento klíč se pak použije při založení výchozího repozitáře.

Založení výchozího repositáře na serveru

Exituje více možností pro založení výchozího repozitáře. Lze tak učinit jak přes účet roota, tak skrze výše uvedený nově vytvořenýuživatelský účet. Níže uvedený postup popisuje založení účtu přes roota:

Přepneme se na uživatele git...

git@git:~# su - git

Příkazem cd skočíme do domovského adresáře, a tam pak spuštěním skriptu gl-setup provedeme výchozí instalaci, během níž gitolite založí potřebmé adresáře - mj. adresář pro repozitáře...

git@git:/$ cd
git@git:~$ gl-setup /tmp/admin.pub

Tím konfigurace na straně serveru prozatím končí...

Postinstalační postup na klientské straně

Ze serveru pak administrátor naklonuje administrační repozitory gitolite-admin na klientskou stanici, kde pak provede potřebné úpravy konfiguračního souboru a přidá uživatelské veřejné klíče. (Viz Administrace)

want@woodstock:~$ git clone git@git:gitolite-admin

Po provedení všech potřebných změn vše administrátor uloží do lokální repozitory příkazem commit. Po odeslání commitnutých změn příkazem push na server, provede gitolite na straně serveru automaticky odpovídající změny - vytvoří repozitáře, uloží klíče, upraví příslušné soubory, atd.

Konfigurace webového rozhraní

Gitolite je pouze administrační systém a pro publikaci vybraných repozitářů přes www rozhraní je třeba využít služeb webového serveru apache. Ten pro generování stránek publikovaných repozitářů volá perlovský skript gitweb. Jelikož webový server Apache tvoří řada instalačních balíků s nejrůznějšími moduly, je nejjednodušší způsob instalace přes distribuční balíkovací systém:

git:~# apt-get install libapache2-mod-perl2 gitweb


Upozornění Apache běží defaultně pod jiným uživatelem, než jsou spouštěny skripty gitolite, je tedy třeba ještě před založením repozitářů, co mají být publikovány přes web upravit v konfiguračním souboru ~/.gitolite.rc obsah proměnné $REPO_UMASK, tak aby mohl skript gitweb k repozitářům určeným k publikaci přes www přistupovat.

Pokud již takové adresáře existují, je třeba u nich nastavit příslušná práva ručně.


gitweb přes libapache2-mod-perl2

Ve výchozím nastavení se spouští gitweb jako CGI skript. To sebou může nést určitá rizika. Aby byl spouštěn přes perlovský modul, je třeba změnit konfiguraci Apache.

Před..

  1. Konfigurační soubor /etc/gitweb.conf
  2. Konfigurační soubor /etc/apache2/conf.d/gitweb
  3. Styly a ikony v adresáři /usr/share/gitweb
  4. Skript v adresáři /usr/lib/cgi-bin/gitweb.cgi

Po...

  1. Konfigurační soubor /etc/gitweb.conf zůstává tam kde byl
  2. Konfigurační soubor /etc/apache2/conf.d/gitweb změněn
  3. Vytvořen adresář /var/www/gitweb a do něj nalinkován styl a ikony
  4. Vytvořen adresář /var/www/perl a do něj nalinkován skript /usr/lib/cgi-bin/gitweb.cgi pod názvem gitweb.pl
  5. vypnout přes a2dismod modul cgid zároveň zkontrolovat zda je zaveden modul perl. Pokud není, je třeba aby byl pomocí a2enmod zaveden
  6. Proveden restart apache2

A něco navíc... V konfiguraci byla nastavena proměnná pro vložení popisu

Přístup přes git server