Si no conoces como funciona Opengnsys, es muy recomendable leer la [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.
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):
Como se puede leer en la introducción a Opengnsys en el servidor principal debe ejecutar dos servicios:
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:
# pacman -S extra/postgresql
$ sudo apt-get install postgresql
# zypper in postgresql
Más tarde procederemos a su configuración.
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:
# pacman -S extra/python2-virtualenv
$ sudo apt-get install python-virtualenv
zypper in python-virtualenv
Más tarde procederemos a la instalación del resto de dependencias python con !VirtualEnv.
Para descargar el código lo mejor es utilizar la herramienta Subversion. Para instalarla en los siguientes sistemas operativos:
# pacman -S extra/subversion
$ sudo apt-get install subversion
# 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.
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.
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.
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.
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.
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.
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
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.
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.
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:
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:
# pacman -S core/syslinux
$ sudo apt-get install syslinux
# 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
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:
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:
# pacman -S extra/dnsmasq
$ sudo apt-get install dnsmasq
# 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.
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:
# pacman -S extra/samba
$ sudo apt-get install samba
# 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
Si ya has instalado samba no es necesario instalar NFS.
La instalación:
# pacman -S core/nfs-utils core/rpcbind
$ sudo apt-get install nfs-server
# 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.
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
(TODO)
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.
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: [wiki:Version2/VirtualBox]