Skip to content

Git na vlastním serveru – Gitolite

Verzovací software Git vytvořený Linusem Torvaldsem jistě nemusím představovat. Pomocí nástroje Gitolite si můžeme ulehčit práci se správou repozitářů na vzdáleném serveru, ke kterému budeme přistupovat po SSH. 

Popisovat, co je git, by bylo asi zbytečné. Jedná se verzovací software. Podobných produktů je vícero a občas se vedou diskuse o tom, který z nich je lepší, výkonnější, více user-friendly. Já se budu věnovat pouze Gitolitu. Jedná se o software, který pomáhá se správou gitových repozitářů, uživatelů, přístupových práv a všeho, co je pro git jako takový, potřeba. Nasazuje se na server, kde chceme mít svoje repozitáře a budeme k němu přistupovat pomocí ssh klíčů. Instalace a základní konfigurace je mimořádně jednoduchá, což určitě potěší, zvláště mě :-D. Jako první tedy nainstalujeme nějaký systém, v mém případě, jako obvykle, CentOS 7, například pomocí KickStartu. Po instalaci systému provedeme samotnou základní instalaci gitolitu.

yum install gitolite3

Vytvoří se instalační adresář /usr/share/gitolite3, který obsahuje vše potřebné pro samotný běh gitolitu. Dále se vytvoří uživatel gitolite3 a jeho domácí adresář ve /var/lib/gitolite3.
Vzhledem k tomu, že pak budete tohoto uživatele používat pro přihlášení na ssh, jsem se rozhodl, že ho přejmenuji na git.

usermod -l git gitolite3

Poté je potřeba vygenerovat si ssh klíč pro přístup po ssh. Tento první klíč se použije v gitolite ke správě konfigurace, repozitářů a přístupových práv. Klíč si tedy vygenerujte pomocí ssh-keygen a jeho pub část nahrajte na server třeba do /tmp. Samozřejmě počítám s tím, že na klíče používáte ssh agenta a nebo konfiguraci pro servery máte v ~/.ssh/config. Je to pohodlné a značně to zjednodušuje práci. Protože jste nyní na serveru přihlášeni jako root, je potřeba se nyní přepnout na uživatele git (nebo gitolite3, pokud jste neprovedli přejmenování).

su - git

Nyní provedeme inicializaci celého prostředí, práv a základních repozitářů:

/usr/share/gitolite3/gitolite setup -pk /tmp/linuxway.pub

Můžeme se nyní přesvědčit, že v adresáři /var/lib/gitolite3 nám přibyly nové adresáře a soubory:

-rw-------   1 git  gitolite3  103 14. bře 14.05 .bash_history
drwx------   6 git  gitolite3 4,0K 14. bře 12.31 .gitolite
-rw-------   1 git  gitolite3 6,6K 14. bře 12.31 .gitolite.rc
-rw-------   1 git  gitolite3    0 14. bře 12.45 projects.list
drwx------   5 git  gitolite3 4,0K 14. bře 12.40 repositories
drwxr-x---   2 git  gitolite3 4,0K 14. bře 12.45 .ssh

V adresáři .ssh se nyní nachází soubor authorized_keys s tímto obsahem:

# gitolite start
command="/usr/share/gitolite3/gitolite-shell linuxway",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADA.........SIC1hIBApVeB/cYxJ5peSgj linuxway@jarvis
# gitolite end

Je zde vidět, že pokud se na server přihlásíme přes ssh jako uživatel git, nedostaneme se do shellu, ale bude spuštěn gitolite wrapper, který dál bude řešit naše požadavky týkající se gitu. Podle názvu klíče, zde linuxway, se s námi bude dál gitolite bavit. Je to naše identifikace a přístupová práva na jednotlivé repozitáře také musíme řešit s ohledem na názvy klíčů svých i kolegů.

Přihlášení po ssh na uživatele git nám vrátí základní informace o našem gitu, například:

ssh git@gitserver
PTY allocation request failed on channel 0
hello linuxway, this is git@gitserver running gitolite3 3.6.2-1.el7 on git 1.8.3.1
R W gitolite-admin
R W linuxway
Connection to gitserver closed.

Nyní bychom tedy měli začít řešit vytvoření našeho prvního repozitáře. Nepočítá se s tím a _nedoporučuje se_ editovat konfigurační soubory přímo na serveru. Konfigurační soubory mají samostatný git repozitář s názvem gitolite-admin a přístup k němu má, po základní instalaci, právě a jen první zadaný klíč. Správný postup je stáhnout si tento repozitář, provést úpravy a poté pushnout zpět.

git clone git@gitserver:gitolite-admin

Stáhne se vám repo a můžete provést potřebné změny. Do adresáře keydir můžete přidat další klíče, třeba kolegů, kteří také potřebují pracovat s gitem. Dále můžete vytvářet a mazat repa v souboru conf/gitolite.conf a také zde nastavovat oprávnění.

repo gitolite-admin
    RW+     =   linuxway

#repo testing
#    RW+     =   @all

repo linuxway
    RW+     =   linuxway

V souboru je vidět, že již existuje repo gitolite-admin a testing. Testing můžeme vypnout a dopíšeme vlastní repo s názvem linuxway. Dále jsou zde vidět oprávnění. Skupina @all znamená přístup komukoliv, to v produkčním prostředí asi nevyužijeme. Lze ale vytvářet skupiny vlastní, s vlastním složením uživatelů.

@dev = jan martin azamat linus
@mng = boss boss2

repo linuxway
    RW+     =   @dev
    R       =   @mng

Nastavení práv má samozřejmě více možností, zde uvádím jen příklad.

Pokud jsme upravili, co bylo potřeba, provedeme commit a push.

git commit -am "pridani repa a nastaveni prav"
git push

Gitolite je inteligentní a zjistí, že jsme přidali repo linuxway do gitolite.conf a tak ho pro nás rovnou vytvoří. Můžeme tedy hned začít pracovat, máme repo, klíče i nastavení práv. Pokud repo odstraníme z konfigurace, gitolite ho znepřístupní, ale nesmaže ho, to nechá na nás.

To je asi vše k základu práce s gitolite.

Happy pushing, commiting, branching 🙂

Git-Icon-1788C

2 thoughts on “Git na vlastním serveru – Gitolite

  1. Profilový obrázek
    Lukáš says:

    A jen možná dotaz – dá se nějak migrovat SVN do Git? Vč. všech revizí a dalších ptákovin? Při zachování stejných uživatelů…

    Odpovědět
    • Honza
      Honza says:

      No, vím, že se migrovat dá. Do jak velký míry nevím, tolik jsem se o to nezajímal.

      Odpovědět

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload the CAPTCHA.