>_Git e Gitolite no Debian 7.8 – 1.2

Neste segundo tutorial vou abordar a configuração de mais 2 clientes.

ba-vm-www-01 (CentOS 6.5) e ba-vm-pve-01 (Debian 6.0)
git (1)

Configurando o servidor ba-vm-www-01.

Passo 1 – Acessando o diretório .ssh.

root@ba-vm-www-01 ~]# cd .ssh/

Passo 2 – Perceba que não existe nenhuma chave criada, neste caso irei criar a chaves com o comando ssh-keygen.

[root@ba-vm-www-01 .ssh]# ls
[root@ba-vm-www-01 .ssh]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
02:63:72:db:60:59:bf:d3:ee:b4:ee:c3:3e:64:dc:8a root@ba-vm-www-01.dtd.intranet
The key's randomart image is:
+--[ DSA 1024]----+
|      .          |
|     o .         |
|  . O   .        |
|   = *   o       |
|    . o S...     |
|       . o+ .    |
|         =o.     |
|        Eo=.     |
|         +*o     |
+-----------------+
[root@ba-vm-www-01 .ssh]#
Passo 3 - Enviando a chave pública do cliente www-01 para o servidor git ba-vm-git-01 no diretório /tmp.
[root@ba-vm-www-01 .ssh]# scp id_dsa.pub root@ba-vm-git-01:/tmp

Configurando o servidor git para dar acesso ao cliente www-01.

Passo 4 – Neste passo, será preciso logar com o usuário root e em seguida alterar para o usuário git.

root@ba-vm-git-01:~# sudo su - git

Passo 5 – No diretório keydir será necessário copiar a chave do cliente www-01.

git@ba-vm-git-01:~$ cd gitolite-admin/keydir/
git@ba-vm-git-01:~/gitolite-admin/keydir$ cp /tmp/id_dsa.pub www-01.pub
git@ba-vm-git-01:~/gitolite-admin/keydir$ ls
evandro.pub  server-git.pub  www-01.pub

Passo 6 – Passo importante neste momento, perceba que estou usando o comando git add para adicionar a chave no servidor git.

git@ba-vm-git-01:~/gitolite-admin/keydir$ git add www-01.pub 

Passo 7 – Outro passo importante, alterando o arquivo de permissão e adicionando o usuário www-01 no grupo admins.

git@ba-vm-git-01:~/gitolite-admin/keydir$ vim ../conf/permissoes.conf 
@admins = server-git evandro www-01

Passo 8 – Com os procedimentos acima já realizado, basta aplicar o commit das alterações.

git@ba-vm-git-01:~/gitolite-admin/keydir$ git commit -a -m "Add novo usuario: www-01"
[master af03570] Add novo usuario: www-01
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 keydir/www-01.pub

Passo 9 – E por fim irei executar o comando git push para aplicar as alterações.

git@ba-vm-git-01:~/gitolite-admin/keydir$ git push
Counting objects: 10, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 1.01 KiB, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@ba-vm-git-01:gitolite-admin
   a087b9a..af03570  master -> master

Verificando se tudo correu bem até aqui.

Passo 10 – No servidor ba-vm-www-01 vou baixar o repositório com o comando git clone. Se tudo correr bem o cliente www-01 será mais um administrador do repositório gitolite-admin.

[root@ba-vm-www-01 /]# git clone git@ba-vm-git-01:gitolite-admin
Initialized empty Git repository in /gitolite-admin/.git/
remote: Counting objects: 28, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 28 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (28/28), done.
Resolving deltas: 100% (3/3), done.

Incluindo o último cliente ba-vm-pve-01.

Passo 11 – No cliente ba-vm-pve-01 dentro do diretório .ssh pude notar que a já possuo a chave pública criada. Neste caso, basta apenas enviar para o servidor git. Só que ao invés de enviar para o servidor ba-vm-git-01 irei enviar para o servidor www-01 que também é o administrador do repositório.

Vejamos o exemplo:

[root@ba-vm-pve-01 .ssh]# authorized_keys  id_dsa  id_dsa.pub  known_hosts
[root@ba-vm-pve-01 .ssh]# scp id_dsa.pub root@ba-vm-www-01:/tmp

Passo 12 – No cliente www-01 dentro do diretório gitolite-admin vou realizar as alterações necessárias para adiconar o cliente pve-01.

[root@ba-vm-www-01 /]# cd gitolite-admin/
[root@ba-vm-www-01 gitolite-admin]# ls
conf  keydir

Vejamos que não existe ainda o chave pública do cliente pve-01 no repositório gitolite-admin. Neste caso, será necessário copiar a chave.

[root@ba-vm-www-01 gitolite-admin]# cd keydir/
[root@ba-vm-www-01 keydir]# ls
evandro.pub  server-git.pub  www-01.pub

Passo 13 – Copiando a chave pública do cliente pve-01 para o diretório keydir.

[root@ba-vm-www-01 keydir]# cp /tmp/id_dsa.pub pve-01.pub
[root@ba-vm-www-01 keydir]# ls
evandro.pub  pve-01.pub  server-git.pub  www-01.pub

Passo 14 – Adicionando a chave do cliente pve-01.

[root@ba-vm-www-01 keydir]# git add pve-01.pub 

Passo 15 – Aplicando o commit das alterações.

[root@ba-vm-www-01 keydir]# git commit -a -m "Add novo usuario: pve-01"
[master 177a2a7] Add novo usuario: pve-01
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 keydir/pve-01.pub

Passo 16 – Enviando as alterações para o servidor git.

[root@ba-vm-www-01 keydir]# git push
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 896 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: 
remote: 		***** WARNING *****
remote:         the following users (pubkey files in parens) do not appear in any access rules:
remote: pve-01(pve-01.pub)
To git@ba-vm-git-01:gitolite-admin
   af03570..177a2a7  master -> master

Validando as alterações.

Passo 17 – No diretório /home/git/.gitolite/keydir do servidor ba-vm-git-01, deverá conter todas as chaves já cadastradas.

git@ba-vm-git-01:~/.gitolite$ cd keydir/
git@ba-vm-git-01:~/.gitolite/keydir$ ls -ltr
total 16
-rw-r--r-- 1 git git 606 Mar  4 11:10 server-git.pub
-rw-r----- 1 git git 605 Mar  4 11:17 evandro.pub
-rw-r----- 1 git git 620 Mar  5 15:04 www-01.pub
-rw-r----- 1 git git 598 Mar  5 15:10 pve-01.pub

Passo 18 – Novamente no cliente www-01, vou alterar o arquivo de permissão para que o cliente pve-01 possa clonar o repositório gitolite-admin.

[root@ba-vm-www-01 keydir]# cd ..
[root@ba-vm-www-01 gitolite-admin]# cd conf/
[root@ba-vm-www-01 conf]# ls
gitolite.conf  permissoes.conf
[root@ba-vm-www-01 conf]# vim permissoes.conf 

Perceba logo abaixo que irei criar mais um grupo @read. Neste grupo estarão os clientes que irão apenas poder baixar o repositório, e que os acessos serão como somente leitura (R).

@admins = server-git evandro www-01 
@read   = pve-01
[root@ba-vm-www-01 conf]# vim gitolite.conf 
include "permissoes.conf"

repo    gitolite-admin
        RW+     =       server-git
        RW+     =       @admins
        R       =       @read

repo    testing
        RW+     =   @all

Passo 19 – Aplicando o commit da alteração.

[root@ba-vm-www-01 conf]# git commit -a -m "Ajustando o arquivo de permissão. Usuário pve-01 somente leitura."
[master aaaf794] Ajustando o arquivo de permissão. Usuário pve-01 somente leitura.
 1 files changed, 2 insertions(+), 1 deletions(-)

Passo 20 – Subindo a alteração para o servidor git com o comando git push.
OBS: Também seria possível utilizar o comando git push -u origin master.

[root@ba-vm-www-01 conf]# git push
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 445 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
remote: 
remote: 		***** WARNING *****
remote:         the following users (pubkey files in parens) do not appear in any access rules:
remote: pve-01(pve.pub)
To git@ba-vm-git-01:gitolite-admin
   5af3d20..aaaf794  master -> master

Passo 21 – Baixando o repositório no cliente pve-01.

root@ba-vm-pve-01:/# git clone git@ba-vm-git-01:gitolite-admin
Cloning into gitolite-admin...
remote: Counting objects: 44, done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 44 (delta 5), reused 0 (delta 0)
Receiving objects: 100% (44/44), 5.50 KiB, done.
Resolving deltas: 100% (5/5), done.

Passo 22 – Alterando o arquivo de gitolite.conf no cliente pve-01.

root@ba-vm-pve-01:/gitolite-admin/conf# vim gitolite.conf 
@admins = server-git evandro www-01 pve-01

Passo 23 – Aplicando o commit da alteração.

root@ba-vm-pve-01:/gitolite-admin/conf# git commit -a -m "Alteracao de permissao"
[master e109380] Alteracao de permissao
 1 files changed, 1 insertions(+), 2 deletions(-)

Passo 24 – Subindo as mudanças para o servidor git.

root@ba-vm-pve-01:/gitolite-admin/conf# git push
W access for gitolite-admin DENIED to pve-01
(Or there may be no repository at the given path. Did you spell it correctly?)
fatal: The remote end hung up unexpectedly

falhou…isso mesmo! Como este cliente não tem acesso a escrita no repositório central localizado no servidor ba-vm-git-01 ele jamais irá conseguir subir a sua versão.

Bom, no próximo tutorial pretendo abordar mais sobre repositórios, comandos e possívelmente sobre o gitweb. Até lá!

>_Git e Gitolite no Debian 7.8 – 1.2
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: