wiki:Version2/Instalacion

Version 26 (modified by trac, 7 years ago) (diff)

--

Nota importante

Si no conoces como funciona Opengnsys, es muy recomendable leer la introducción a Opengnsys? (TODO) donde se explican los conceptos principales y el funcionamiento básico útiles para proceder con la instalación. Tanto el servidor como los repositorios pueden instalarse de dos maneras. Recomendamos la forma simple si quieres poner en producción un sistema Opengnsys o simplemente quieres probarlo. Si lo que quieres es colaborar con el proyecto o modificarlo, recomendamos la instalación para desarrolladores.

Instalación simple del servidor (No disponible actualmente)

La manera más sencilla de hacerlo es descargar el instalador creado y ejecutarlo. Se puede descargar desde aquí: (TODO)

Una vez descargado, hay descomprimir el archivo en directorio /opt con:

# mkdir /opt
# tar xvfj opengnsys_server.tar.bz2 -C /opt

Por último ejecutar:

# /opt/opengnsys/server_installer.sh

A continuación debemos responder a las siguientes preguntas (TODO):

Instalación para desarrolladores del servidor

Como se puede leer en la introducción a Opengnsys en el servidor principal debe ejecutar dos servicios:

  • La consola web.
  • El servicio que recoge de los resultados de los trabajos ejecutados por los clientes (job_receiver).

Instalación de la base de datos

Es imprescindible el uso de una base de datos donde se almacenará toda la información de nuestro sistema. Se puede instalar y configurar cualquiera de los que soporta sqlalchemy, (se pueden encontrar en http://www.sqlalchemy.org/features.html).

Recomendamos utilizar sqlite si solamente va realizar pruebas con Opengnsys ya que no necesitará instalar ningún paquete adicional y su utilización es sencilla. Si por el contrario va a poner su sistema en producción es recomendable utilizar un sistema de datos más potente como PostgreSQL. La instalación de PostgreSQL en los siguientes sistemas operativos sería:

  • ArchLinux
    # pacman -S extra/postgresql
    
  • Ubuntu
    $ sudo apt-get install postgresql
    
  • OpenSUSE
    # zypper in postgresql
    

Más tarde procederemos a su configuración.

Instalación del entorno virtual

Para preparar el entorno necesitamos la herramienta VirtualEnv para python. Este herramienta instalará las dependencias necesarias para python de manera independiente a las del sistema protegiéndonos frente a posibles conflictos con los paquetes que distribuya nuestra distribución. Su instalación para las siguientes distribuciones sería:

  • ArchLinux
    # pacman -S extra/python2-virtualenv
    
  • Ubuntu
    $ sudo apt-get install python-virtualenv
    
  • OpenSUSE
    zypper in python-virtualenv
    

Más tarde procederemos a la instalación del resto de dependencias python con VirtualEnv.

Descarga del código

Para descargar el código lo mejor es utilizar la herramienta Subversion. Para instalarla en los siguientes sistemas operativos:

  • ArchLinux
    # pacman -S extra/subversion
    
  • Ubuntu
    $ sudo apt-get install subversion
    
  • OpenSUSE
    # zypper in subversion
    

Luego ejecutar en el directorio donde nos queramos descargar el código:

$ svn co http://www.opengnsys.es/svn/branches/version2 opengnsys

Con todo lo necesario descargado e instalado procedemos a la configuración.

Configuración de SQLAlchemy

En el servidor es necesario que exista una base de datos que usarán los dos servicios. Por defecto es sqlite, pero se puede cambiar la configuración en el fichero server/web/config.py para que no sea así. Por defecto encontramos en este fichero algo así:

DB = 'sqlite:///database.sqlite'
#DB = 'postgresql://opengnsys:opengnsys@localhost/opengnsys'

Para saber como configurar la base de datos usando mySQL, PostgreSQL, Oracle o cualquier otra base de datos que soporta SQLAlchemy echar un vistazo a http://www.sqlalchemy.org/docs/05/dbengine.html#create-engine-url-arguments.

Vamos a configurar el SQLAlquemy para que funcione con PostgreSQL, aunque puede ser modificado para adaptarse a cualquier necesidad.

#DB = 'sqlite:///database.sqlite'
DB = 'postgresql://opengnsys:opengnsys@localhost/opengnsys'

Ahora nos aseguramos de que el servicio está funcionando:

# /etc/init.d/postgresql start

Ahora entramos como usuario postgres para realizar las operaciones, existen dos maneras según el sistema usado:

$ sudo -i -u postgres
$ su root
$ su - postgres

Nuestro prompt habrá cambiado indicando que ahora somos el usuario postgres. Ahora procedemos a crear un usuario para la base de datos llamado "opengnsys". Cuando pregunte por la contraseña debemos poner también "opengnsys" para que funcione con la configuración por defecto.

$ createuser -D -R -S -P opengnsys

Una vez creado procedemos a crear una base de datos también llamada "opengnsys" y que pertenezca al usuario creado anteriormente:

$ createdb -T template0 -E UTF8 opengnsys -O opengnsys

Con esto ya tenemos configurado PostgreSQL.

Nota importante: Si no arranca el servicio y en el fichero de log "/var/log/postgresql.log" aparece lo siguiente:

postgres cannot access the server configuration file "/var/lib/postgres/data/postgresql.conf": No such file or directory

Probad a ejecutar como usuario postgres:

$ initdb -D /var/lib/postgres/data/

Y volver a intentar arrancar el servicio de nuevo.

Configuración de SQLite

Si optamos por no usar PostreSQL y queremos una opción más sencilla (y mucho menos escalable) podemos utilizar SQLite. Si cambiamos el fichero "server/web/config.py" de esta manera:

DB = 'sqlite:///database.sqlite'
#DB = 'postgresql://opengnsys:opengnsys@localhost/opengnsys'

De esta forma se usa una base de datos sqlite que no necesita configuración ni instalación adicional. Todos los datos se guardarán en el archivo "database.sqlite" que se generará automáticamente en el siguiente paso.

Creación del entorno virtual

Instalemos las dependencias python que tiene el servicio web a través de la herramienta VirtualEnv?. Accedemos a el directorio server y ejecutamos:

$ cd server/
$ virtualenv --distribute --no-site-packages env/

Esto nos instala y configura un python2 mínimo en el directorio. Para activarlo e instalar las dependencias necesarias se ejecuta:

$ source env/bin/activate

Aparecerá al principio del prompt de la consola "(env)", esto nos indica que estamos utilizando el entorno virtual generado. Cada vez que vaya a utilizarse la web en la consola habrá que ejecutar este comando en el directorio "server". Para salir del entorno se puede ejecutar:

$ deactive

Aunque también se puede cerrar esa terminal sin que ocurra más problema.

Para terminar de instalar las dependencias en este entorno virtual, debemos estar usandolo por lo que hay que asegurarse que aparece "(env)" al principio del prompt antes de ejecutar el siguiente comando:

$ pip-2.7 install -r dependencies.txt

Este comando sólo habrá que usarlo una vez ya que es un proceso de instalación y una vez hecho no habrá que repetirlo.

Creación de la base de datos

Simplemente accedemos al directorio "server/web/" y ejecutamos:

$ cd server/web/
$ ./db.py

Esto generará las tablas necesarias en la base de datos. Nos mostrará el nombre de un usuario y contraseñas que debemos usar cuando comencemos a utilizar la consola web.

Generación de traducciones

Al igual que en el caso anterior vamos al directorio "server/web/" y ejecutamos lo siguiente:

$ cd server/web/
$ ./i18n_make.sh
$ ./i18n_make_plugin.sh

Esto generará los ficheros .mo a partir de los .po encontrados.

SSL Setup

OpenGnSys usa una conexión segura entre el servidor, repositorios y clientes. Para ello se usan unos certificados SSL certificados por una CA (Autoridad Certificadora). OpenGnSys sólo comprueba que el certificado es válido y confiable. En todo la plataforma OpenGnSys las conexiones SSL están siempre verificadas en ambos extremos: en cliente y en servidor.

Se puede configurar en el archivo de configuración (config.py) la ruta a la clave privada del certificado del servidor, la ruta de la clave pública y la ruta de la clave pública de la entidad certificadora. Por defecto incluimos unos certificados de ejemplo en el directorio web/ssl, que son usados por la configuración por defecto. Esto es así por comodidad, si desea añadir seguridad a su sistema, debería crear y utilizar sus propios certificados como se explica en el Tutorial Certificado SSL?

Arrancar el servidor

Para ejecutar la consola web:

$ cd server/
$ source env/bin/activate
$ cd web/
$ ./admin.py

El servicio web será lanzado en http://localhost:8080/. Si quieres modificar el puerto usado:

$ ./admin.py <puerto>

Recordad que para un puerto menor que 1024 hace falta tener privilegios de superusuario.

El job_receiver también se encuentra en server/web/ ya que utiliza la misma configuración que la consola web. Para ejecutarlo:

$ cd server/
$ source env/bin/activate
$ cd web/
$ ./job_receiver.py

Hay que recordar que ambos servicios deben estar ejecutándose para que funcionen correctamente, arrancando primero la consola web y después el job_receiver.

Instalación simple del repositorio (No disponible actualmente)

Descargamos el código del repositorio aquí (TODO).

Al igual que en el servidor necesitamos poner los ficheros en el directorio /opt:

# mkdir -p /opt
# tar xvfj opengnsys_repo.tar.bz2 -C /opt

Nota: No existe ningún conflicto al instalar en el mismo ordenador los servicios del servidor y repositorio de Opengnsys y puede realizarse sin ningún problema.

Continuaremos configurando los servicios externos ajenos a Opengnsys.

Instalación para desarrolladores del repositorio

Si eres desarrollador puedes descargaste el como se explica en descarga del código. A diferencia del servidor donde no es estrictamente necesario instalar los servicios en su directorio por defecto /opt/opengnsys, en el repositorio es muy recomendable ya que habría que modificar muchas configuraciones.

Lo primero entonces es crear el directorio donde vamos a trabajar:

# mkdir -p /opt/opengnsys

Puede optar por cambiar los permisos de esa carpeta para trabajar con su usuario habitual:

# chown $USER /opt/opengnsys

Creamos las carpetas necesarias:

$ mkdir -p /opt/opengnsys/client/bin
$ mkdir -p /opt/opengnsys/client/cache
$ mkdir -p /opt/opengnsys/client/log
$ mkdir -p /opt/opengnsys/client/lib/python
$ mkdir -p /opt/opengnsys/client/images
$ mkdir -p /opt/opengnsys/images
$ mkdir -p /opt/opengnsys/log/clients
$ mkdir -p /opt/opengnsys/tftpboot/ogclient
$ mkdir -p /opt/opengnsys/tftpboot/syslinux

Procedemos entonces a descargarnos dos archivos:

  1. opengnsys2_bin_utilities.tar.gz que contiene dentro los archivos necesarios para ejecutar el navegador web que se ejecuta desde el cliente.
  2. opengnsys2_ogclient.tar.gz que contiene el live generado con la mayoría de las herramientas en una imagen squashfs y los archivos necesarios para arrancar a través del servidor DHCP y TFTP.

Estos archivos se pueden descargar a través de http://opengnsys.es/downloads.

Descomprimir de la siguiente manera:

$ tar xfv opengnsys2_bin_utilities.tar.gz -C /opt/opengnsys/
$ tar xfv opengnsys2_ogclient.tar.gz -C /opt/opengnsys/tftpboot/ogclient

Ahora copiaremos algunos ficheros del código descargado previamente por subversion:

$ cp repo/engine/2.0 /opt/opengnsys/client/engine -rfv
$ cp repo/job_executer /opt/opengnsys/client -rfv
$ cp repo/export_for_clients/* /opt/opengnsys/client -rfv
$ cp repo/ogr/libogr.py /opt/opengnsys/client/lib/python -rfv
$ cp repo/ogr/ogr /opt/opengnsys/client/bin -rfv 
$ cp repo/services_config/tftpboot/* /opt/opengnsys/tftpboot/ -rfv

Por último instalar syslinux en el sistema para copiar los ficheros necesarios para el arranque en red:

  • ArchLinux
    # pacman -S core/syslinux
    
  • Ubuntu
    $ sudo apt-get install syslinux
    
  • OpenSUSE
    # zipper in syslinux
    

Copiamos los ficheros a su ubicación:

$ cp /usr/lib/syslinux/pxelinux.0 /opt/opengnsys/tftpboot/
$ cp /usr/lib/syslinux/chain.c32 /usr/lib/syslinux/vesamenu.c32 /opt/opengnsys/tftpboot/syslinux

Hasta ahora todo el trabajo realizado es para que el cliente pueda arrancar por red. Sin embargo, el repositorio también puede recibir ordenes desde el servidor por lo que se debe ejecutar el job_executer. Debería copiarse en un directorio donde se ejecutará:

$ cp repo/job_executer /opt/opengnsys -rfv 

Configuración de los servicios externos del repositorio

La instalación de un repositorio es más complicada ya que tenemos que configurar también algunos servicios externos que nos permitan arrancar por red a los clientes. Los servicios necesarios son:

  • Samba o NFS
  • DHCP
  • TFTP

DHCP y TFTP

El DHCP es un servicio para dar a los ordenadores de una red una IP de manera automática, lo que nos ayudará a configurar nuestra red y permitir que los ordenadores arranque a través de la red. El TFTP es un servicio de envío de ficheros también necesario para el arranque de los clientes. El programa dnsmasq puede realizar ambos simultáneamente de una manera sencilla. Para instalar podemos ejecutar:

  • ArchLinux
    # pacman -S extra/dnsmasq
    
  • Ubuntu
    $ sudo apt-get install dnsmasq
    
  • OpenSUSE
    # zypper in dnsmasq
    

Para configurar el servicio dnsmasq, debemos modificar el fichero /etc/dnsmasq.conf. Existe un fichero de ejemplo en /opt/opengnsys/services_config/dnsmasq.conf que puede ser consultado por cualquier duda, ya que contiene una configuración completamente funcional.

Además de la configuración de dnsmasq, podemos configurar el arranque en red de los clientes. La configuración se encuentra en el directorio /opt/opengnsys/tftpboot/pxelinux.cfg/. Por defecto encontramos el fichero default que será utilizado por todos los clientes para arrancar. Se puede encontrar más información en http://www.syslinux.org/wiki/index.php/PXELINUX. Para configurar el tiempo de arranque por defecto modifique la variable timeout que establece el tiempo en decimas de segundos, es decir, que si ponemos 100, habrá un timeout de 10 segundos.

SAMBA

Tanto Samba como NFS son servicios que nos permiten compartir ficheros con nuestros ordenadores en red, por lo que solo es necesario instalar uno de los dos. Se recomienda usar Samba porque suele ser más eficiente que NFS.

Lo primero que haremos es instalar el servicio:

  • ArchLinux
    # pacman -S extra/samba
    
  • Ubuntu
    $ sudo apt-get install samba
    
  • OpenSUSE
    # zypper in samba
    

Como anteriormente, podemos encontrar un fichero de configuración de ejemplo en /opt/opengnsys/services_config/smb.conf que podemos colocar en /etc/samba/smb.conf y adaptarlos a nuestras necesidades.

Además de esta configuración, hay que añadir un usuario opengnsys y con contraseña "og" con el que conectar.

# useradd opengnsys

Además del usuario, se ha creado un nuevo grupo opengnsys al que le vamos a dar permisos de escritura en /opt/opengnsys

$ chmod -R g+w /opt/opengnsys
$ chown -R :opengnsys /opt/opengnsys

De esta manera se pueden conectar a estos directorios usando el usuario opengnsys. Debemos añadir la contraseña, que debe ser og, con:

# echo -ne "og\nog\n" | smbpasswd -a opengnsys

NFS

Si ya has instalado samba no es necesario instalar NFS.

La instalación:

  • ArchLinux
    # pacman -S core/nfs-utils core/rpcbind
    
  • Ubuntu (TODO) es nfs el paquete?
    $ sudo apt-get install nfs-server
    
  • OpenSUSE (TODO) es samba el paquete?
    # zypper in nfs-server
    

El fichero de configuración de NFS es /etc/exportfs. Tenemos un fichero de ejemplo en repo/services_config/exportfs que se puede utilizar para configurar el servicio.

Obtención de la distro arranque para el repo

Lo más sencillo es descargarse una distribución ya preparada para funcionar. Puedes descargarla desde aquí: http://opengnsys.es/downloads/40

Descomprimir en el directorio /opt/opengnsys las dos carpetas que vienen en el comprimido.

# tar xvfj oglive.tar.bz2 -C /opt/opengnsys/

Para más información sobre la generación del cliente o como poder hacer pruebas por VirtualBox puedes mirar la información de desarrollo de OGLive

Arrancar el repositorio

(TODO)

Instalación de los clientes

Para los clientes la única modificación que hay que hacer es configurar en la BIOS el arranque por red (Wake On Lan) y configurarla como primera opción de arranque.

VirtualBox

Si eres desarrollador y no tienes más ordenadores para testear Opengnsys, una buena solución puede ser usar VirtualBox para crear máquinas virtuales y utilizarlas como servidores, repositorios o clientes. Puede encontrarse más información en: Version2/VirtualBox