martes, 11 de marzo de 2014

KDM Hecho en El Salvador

Nuestro amigo y compañero Giovanni Hurtado (xiorone@gmail.com) de la comunidad openSUSE de El Salvador, ha echo un KDM muy elegante y fino.

Te dejo una imagen:


Puedes descargarlo desde KDE-LOOK
http://kde-look.org/content/show.php?content=163462

Felicidades Giovanni, un gran aporte a Linux.

jueves, 6 de marzo de 2014

Git en mi empresa

Git es un gran software para el control de versiones.

Es importante saber como implementarlo en una empresa, para el control de versiones de Software que desarrollamos o cualquier otra cosa que queramos controlar.

En mi caso lo uso para:
- Control de versiones de software que se desarrolla.
- Control de planos.
- Control de desarrollo de escenarios virtuales para aeropuertos (siempre es bueno regresar atras una textura modificada).

El esquema propuesto:




Antes que nada quiero decir que esta no es la mejor forma escrita en piedra, si buscan por la WEB, podran encontrar algo mejor o peor.. Así como comentarles que no voy a explicar en detalle como se configura cada cosa, ya que existen muchos tutoriales para hacer estas tareas.

Firewall
El firewall esta configurado con la App Shorewall, en este caso con tres interfaces (existen excelentes tutoriales en Alcance libre y el sitio de Shorewall para configurarlo). En este caso un CentOS 6.

Servidos de respaldo (IP dmz 10.10.1.6)
EL servidor de respaldo configurado con un Appliance (openfiler), con el cual puedo gestionar los directorios compartidos con samba y NFS, es donde al final tengo los respaldos de las versiones.

Dándole una mirada al archivo exports
 [roberto@srvresp ~]$ more /etc/exports

# PLEASE DO NOT MODIFY THIS CONFIGURATION FILE!
#       This configuration file was autogenerated
#       by Openfiler. Any manual changes will be overwritten
#       Generated at: Thu Mar 6 10:48:18 CST 2014

/mnt/REPO  10.10.1.3/255.255.255.0(rw,anonuid=96,anongid=96,secure,root_squash,wdelay,sync) 


En este caso el directorio exportado esta sobre /mnt.

Es fundamental acá leer un poco sobre como exportar carpetas con NFS

El servidor de producción (IP dmz 10.10.1.3)
Un servidor con CentOS 6, donde tenemos la carpeta /var/git, que es donde montaremos la carpeta de respaldo (es de notar que los servidores en la DMZ estan en un circulo de confianza, salvo que configuremos en su propio firewall o el shorewall, que no se tengan acceso, en este caso no).

Demosle una mirada con el comando mount a nuestra carpeta de respaldo montada para llevar nuestro control de versiones.

 [root@srvpro Servidores]# mount
.....
.....
...
10.10.1.6:/mnt/REPO on /var/git type nfs (rw,addr=10.10.1.6) nfsd on /proc/fs/nfsd type nfsd (rw)
[root@srvpro Servidores]#

En este punto tenemos una comunicación entre servidores, por lo que los respaldos están haciéndose en el servidor de respaldos, para el cual el servidor de producción solo monta un directorio. (El server de producción no tiene mucho espacio en disco).

Ahora vamos con Git en el server de produccion y el cliente.
Acá pueden haber muchas dudas sobre el uso de Git o como se come eso, lo cual no entrare en detalle, ya que como lo mencione al principio, hay mucha información en la WEB, tutoriales que explican desde lo mas básico.
http://rogerdudler.github.io/git-guide/index.es.html

En el cliente Linux openSUSE
Por supuesto que tengo que tener instalado git, esta en los repos de openSUSE y pueden instalarlo con el gestor de paquetes zypper.

Vamos hacer esto en la carpeta home del usuario.

cheperobert@cheperobert:~> mkdir fercho
cheperobert@cheperobert:~> cd fercho/
cheperobert@cheperobert:~/fercho> git init
Initialized empty Git repository in /home/cheperobert/fercho/.git/
cheperobert@cheperobert:~/fercho> touch leeme.txt
cheperobert@cheperobert:~/fercho> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       leeme.txt
nothing added to commit but untracked files present (use "git add" to track)
cheperobert@cheperobert:~/fercho> git add *
cheperobert@cheperobert:~/fercho> git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   leeme.txt
#
cheperobert@cheperobert:~/fercho> git commit -m "Iniciando control de versiones para fercho versión 1.0"
[master (root-commit) 7cad3c1] Iniciando control de versiones para fecho versión 1.0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 leeme.txt
cheperobert@cheperobert:~/fercho> cd ..
cheperobert@cheperobert:~> git clone --bare fercho/ fercho.git
Cloning into bare repository 'fercho.git'...
done.
cheperobert@cheperobert:~>


Explicando un poquito:
1. Cree una carpeta fercho
2. Entre a la carpeta
3. Inicialice un nuevo proyecto
4. Cree un archivo
5. Revise el estado del archivo con git status
6. Agrege el archivo con git add
7 Revise nuevamente
8. Hice un commit de los archivos
9. Sali del directorio
10 Clone el proyecto fercho con fercho.git. (Con la opción --bare solo crea un directorio, sin los archivos del arbol de trabajo, por lo que no podemos ver los archivos )


Este fercho.git, lo copio a la carpeta /var/git de mi servidor de produccion.
Ahora ya  podemos clonar en los clientes desde el directorio del servidor de producción, los repositorios para trabajar, luego hacemos push y pull para subir y bajar.

Algunos pasos que no menciono.
Para copiar el fercho.git al server de producción, pueden hacerlo con "scp".
Para clonar el repositorio en los clientes, pueden usar ssh con un usuario valido en el servidor de producción, por lo que es necesario configurar SSH.

Espero les sirva :)