miércoles, enero 22, 2014

Instalacion de Gitolite

Escenario:

  • Instalacion del Sistema de control de versiones Gitolite
  • Se crearan 2 usuarios:
  • git: usuario de instalacion
  • plataforma: Usuario de administracion
  • websync:Usuario

* INSTALAMOS REPOSITORIO DE EPEL
[ec2-user@ip-172-31-22-211 ~]$ sudo su
[root@ip-172-31-22-211 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
* Procedemos a instalar el git y crear el usuario de instalacion
[root@ip-172-31-22-211 ~]# yum -y install git
[root@ip-172-31-22-211 ~]# adduser git
* Generaremos las llaves RSA para el usuario git
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ ssh-keygen -t rsa 
[git@ip-172-31-22-211 ~]$ cp .ssh/id_rsa.pub git.pub
* Clonaremos el repositorio GITOLITE de GITHUB (Si hay error, verifica tus puertos)
[git@ip-172-31-22-211 ~]$ git clone git://github.com/sitaramc/gitolite 
Cloning into 'gitolite'...
remote: Reusing existing pack: 8339, done.
remote: Total 8339 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (8339/8339), 3.50 MiB | 1.83 MiB/s, done.
Resolving deltas: 100% (4699/4699), done.
* Creamos carpeta bin
[git@ip-172-31-22-211 ~]$ mkdir -p $HOME/bin
* Al momento de instalar, te puede dar el siguiente error
[git@ip-172-31-22-211 ~]$ gitolite/install -to $HOME/bin
Can't locate Time/HiRes.pm in @INC (@INC contains: /home/git/gitolite/src/lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/git/gitolite/src/lib/Gitolite/Common.pm line 74.
BEGIN failed--compilation aborted at /home/git/gitolite/src/lib/Gitolite/Common.pm line 74.
Compilation failed in require at gitolite/install line 15.
BEGIN failed--compilation aborted at gitolite/install line 15.
[git@ip-172-31-22-211 ~]$ logout
* Debes instalar la siguiente dependencia
[root@ip-172-31-22-211 ~]# yum -y install perl-Time-HiRes
* Volvemos a instalar como git
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ gitolite/install -to $HOME/bin
* Instalamos nuestra llave RSA
[git@ip-172-31-22-211 ~]$ gitolite setup -pk git.pub
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
* Clonamos repositorio de adminstracion
[git@ip-172-31-22-211 ~]$ git clone git@localhost:gitolite-admin.git
Cloning into 'gitolite-admin'...
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 90:d2:47:99:ae:05:4d:97:e6:d4:a1:0e:bb:fe:63:df.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 737 bytes | 0 bytes/s, done.
remote: Total 6 (delta 0), reused 0 (delta 0)
* crearemos los usuarios plataforma y websync con sus llaves RSA
[root@ip-172-31-22-211 ~]# adduser websync
[root@ip-172-31-22-211 ~]# adduser plataforma
[root@ip-172-31-22-211 ~]# su - websync
[websync@ip-172-31-22-211 ~]$ ssh-keygen -t rsa
[websync@ip-172-31-22-211 ~]$ logout
[root@ip-172-31-22-211 ~]# su - plataforma
[plataforma@ip-172-31-22-211 ~]$ ssh-keygen -t rsa
[plataforma@ip-172-31-22-211 ~]$ logout
[root@ip-172-31-22-211 ~]# cp /home/websync/.ssh/id_rsa.pub /home/git/websync.pub
[root@ip-172-31-22-211 ~]# cp /home/plataforma/.ssh/id_rsa.pub /home/git/plataforma.pub
[root@ip-172-31-22-211 ~]# chown git.git /home/git/*.pub
* Ahora haremos a plataforma administrador y a websync usuario
[root@ip-172-31-22-211 ~]# su - git
[git@ip-172-31-22-211 ~]$ cd gitolite-admin/
[git@ip-172-31-22-211 gitolite-admin]$ cp /home/git/websync.pub keydir/
[git@ip-172-31-22-211 gitolite-admin]$ cp /home/git/plataforma.pub keydir/
* VERIFICAMOS SI ESTAN LAS LLAVES
[git@ip-172-31-22-211 gitolite-admin]$ ls -l keydir/
total 12
-rw-rw-r-- 1 git git 402 Jan 17 21:11 git.pub
-rw-r--r-- 1 git git 409 Jan 22 23:01 plataforma.pub
-rw-r--r-- 1 git git 406 Jan 22 23:01 websync.pub
* AÑADIMOS EL USUARIO PLATAFORMA COMO ADMINISTRADOR DE GITOLITE
[git@ip-172-31-22-211 gitolite-admin]$ vim conf/gitolite.conf
------------------------------------------------------------
repo gitolite-admin
      RW = git plataforma
------------------------------------------------------------
* AÑADIMOS LOS CAMBIOS
[git@ip-172-31-22-211 gitolite-admin]$ git add .
[git@ip-172-31-22-211 gitolite-admin]$ git config --global user.email "git@example.com"
[git@ip-172-31-22-211 gitolite-admin]$ git config --global user.name "git"
[git@ip-172-31-22-211 gitolite-admin]$ git commit -a -m "llaves"
[git@ip-172-31-22-211 gitolite-admin]$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
    git config --global push.default matching
  To squelch this message and adopt the new behavior now, use:
    git config --global push.default simple
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
Counting objects: 7, done.
Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 1.03 KiB | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To git@localhost:gitolite-admin.git 1e388a8..b18e1f7  master -> master * SALIMOS COMO GIT [git@ip-172-31-22-211 gitolite-admin]$ logout * INGRESAREMOS COMO USUARIO PLATAFORMA Y DESCARGAMOS EL REPO DE ADMINISTRACION [root@ip-172-31-22-211 ~]# su - plataforma [plataforma@ip-172-31-22-211 ~]$ git clone git@localhost:gitolite-admin.git [plataforma@ip-172-31-22-211 ~]$ ls gitolite-admin [plataforma@ip-172-31-22-211 ~]$ cd gitolite-admin/ * AGREGAMOS AL USUARIO WEBSYNC COMO UN USUARIO DEL REPOSITORIO SITE1 [plataforma@ip-172-31-22-211 gitolite-admin]$ vim conf/gitolite.conf --------------------------------------------- repo gitolite-admin RW = git plataforma repo testing RW = @all repo site1 RW = websync --------------------------------------------- [plataforma@ip-172-31-22-211 gitolite-admin]$ git config --global user.email "plataforma@site.com" [plataforma@ip-172-31-22-211 gitolite-admin]$ git config --global user.name "plataforma" [plataforma@ip-172-31-22-211 gitolite-admin]$ git commit -a -m "plataforma" [plataforma@ip-172-31-22-211 gitolite-admin]$ git push
    Hasta aqui, el usuario plataforma, es quien creara los repositorios y websync lo usaremos para que acceda a todos los repositorios (algo como un administrador de proyectos), ademas le daremos funciones de sincronizacion de servidores (actualizare despues)

No hay comentarios: