# Introducción a OpenGnsys v3.0

El proyecto OpenGnsys (léase OpenGénesis) reúne el esfuerzo conjunto de varias Universidades Públicas españolas para construir una aplicación que permita una fácil gestión centralizada de ordenadores y servidores. Con ella se permite la distribución, instalación y despliegue de distintos sistemas operativos.

![ogintro-universidades.png](../assets/images/screenshots/ogintro-universidades.png)

OpenGnsys nace debido a la necesidad de disponer de un conjunto de herramientas libres y abiertas que constituyan un sistema completo de gestión y clonación de equipos, versátil e intuitivo, que pueda ser utilizado tanto en la gestión de aulas de informática, como para reinstalar ordenadores y servidores.

La página web de OpenGnsys (www.opengnsys.es) dispone de todos los manuales del proyecto, el código completo de las distintas versiones, varios foros de discusión y ayuda, documentación de la API de programación, etc.

## Antecedentes, presente y futuro

OpenGnsys nace en mayo de 2009 tras los Grupos de Trabajo de RedIRIS celebrados en Málaga, como un esfuerzo de integrar varios proyectos en desarrollo:

- Brutalix, Universidad de Zaragoza
- Entorno Avanzado de Clonación (EAC), Universidad de Málaga
- Interfaz Web Hidra, Universidad de Sevilla

Actualmente varias Universales colaboran en el proyecto.

Esta versión, aborda las siguientes mejoras
- Python como lenguaje de programación principal
- Comunicación entre todos los componentes con API REST
- Nueva consola web: symfony-angularjs
- Sincronización de imágenes con GIT
- Servicio de logs y monitoreo

## Características de OpenGnSys

La gestión principal de OpenGnsys está basada en una sencilla interfaz web que permite realizar las tareas comunes para gestionar la distribución de software en los distintos clientes. Sin embargo, la estructura de OpenGnsys es lo suficientemente versátil como para adaptarse a las necesidades de las diferentes arquitecturas de redes de ordenadores disponibles en empresas e instituciones.

Para un administrador con conocimientos avanzados, OpenGnsys permite incluir nuevas funcionalidades a partir de la API de funciones del motor de clonación y establece la forma de integrarlas en la consola de una manera sencilla, así como definir menús de inicio para los distintos clientes.

La forma de trabajo habitual consiste en partir de un equipo modelo, donde tendremos instalado uno o más sistemas operativos con los programas y los datos necesarios, crear imágenes de sus sistemas de ficheros y luego replicarlas a todos los ordenadores de una organización o a un grupo de ellos.

![ogintro-equipomodelo.png](../assets/images/screenshots/ogintro-equipomodelo.png)

Las tareas específicas de configuración y modificación de datos en cada uno de los clientes pueden realizarse directamente desde OpenGnsys una vez terminado el proceso de volcado de la imagen, sin necesidad de arrancar el sistema operativo correspondiente, accediendo a la información almacenada en los discos. Esto supone una significativa ventaja sobre otros productos similares, incluso comerciales.

La distribución de imágenes y ficheros puede realizarse de forma flexible, por lo que se han implementado distintos protocolos de comunicaciones, como Unicast, Multicast y P2P; e incluso también puede disponerse de dicha información de forma off-line (sin necesidad de comunicación con el servidor) accediendo directamente a la caché de datos local de cada cliente o a un dispositivo externo de almacenamiento.

La restauración de equipos se realiza a nivel de sistema de archivos, y permite realizarla en particiones de disco menores al tamaño de la original, hasta el mínimo ocupado por los datos.

La restauración del sistema operativo original no sólo supone hacer una copia exacta del modelo: también pueden realizarse tareas de configuración del equipo destino, tales como cambio de nombre del equipo, detección del inventario de hardware y de software instalado, copia o borrado de ficheros y directorios, modificación del registro de Windows, inclusión en un dominio, etc.

Por definición, OpenGnsys es un proyecto de Software Libre. Como tal, todo el código está licenciado bajo GPLv3 o superior, mientras que la documentación de los cursos está disponible bajo licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual.

## Arquitectura

En esta versión de OpenGnsys, se ha puesto énfasis en la modularidad de la solución, permitiendo desplegar los diferentes componentes en un sólo servidor monolítico, o bien en máquinas separadas. Esto dota de mayor flexibilidad a la solución, que permite cubrir cualquier escenario.

La arquitectura de OpenGnsys es suficientemente flexible como para adaptarse a las necesidades de los diferentes modelos de redes de ordenadores, tanto de empresas como de instituciones, pudiendo ser utilizado en distintos tipos de escenario:

1. Gestión centralizada de Unidades TIC de Apoyo a Docencia e Investigación, tanto de laboratorios de docencia presencial como de autoaprendizaje.
2. Mantenimiento del parque de ordenadores personales de los miembros de una Institución.
3. Despliegue y mantenimiento de los servidores de un Centro de Datos en particular.
4. Administración de repositorios de clonación de equipos para los servicios de soporte (helpdesk) o los puntos de información de una Institución.

### Capas de servicios

OpenGnsys está constituido por un conjunto de módulos separados en distintas capas de servicios:

- **Capa inferior**: encargada del acceso directo a los dispositivos del cliente y de las funciones del motor de clonación.
- **Capa intermedia**: constituida por un conjunto de herramientas para realizar tareas complejas y personalización del entorno.
- **Capa de administración**: que consta de la interfaz web y la base de datos de gestión.

### Módulos

El Proyecto OpenGnsys es un sistema modular que integra un conjunto de componentes interrelacionados entre sí, que puede ser adaptado a una diversidad de escenarios de trabajo posibles. Estos componentes están formados por servicios estándar (servidores de archivos, web, base de datos, DHCP, PXE, ...) y por herramientas desarrolladas a medida para el proyecto, que en combinación ofrecen todas las prestaciones del sistema.

A continuación se describen los distintos componentes del Proyecto OpenGnsys:

**OpenGnsys Web Administración**

Este servicio, consiste en tres componentes que centralizan la organización de la solución:

- **ogCore**: es la interfaz API que permite la interconexión de todos los componentes entre sí, así como la administración de la solución desde la interfaz web.
- **ogGUI**: la interfaz web, permite la administración completa de la solución, sin necesidad de utilizar la consola.
- **ogDB**: la base de datos de OpenGnsys, que centraliza toda la información, y que en esta versión, ha sufrido un rediseño de arquitectura para poder asumir el nuevo paradigma de la solución.

**OpenGnsys DHCP**

Se ha actualizado el servicio DHCP, de tal forma que se puede desplegar de forma opcional y modular, contando con una API para su administración. En la versión actual de OpenGnsys, se está empleando KEA DHCP.

**OpenGnsys Boot**

El sistema de arranque de OpenGnsys, anteriormente integrado en "OpenGnsys Server", se ha convertido en un módulo con API de administración, que permite su intsalación de forma "opcional" (aunque su funcionalidad es imprescindible para el funcionamiento de OpenGnsys). Con este módulo es posible administrar la asignación de ogLive, así como las plantillas y su asignación.

**OpenGnsys Repositorio**

Gestor del repositorio de imágenes para cada una de las unidades administrativas definidas en el módulo OpenGnSys Repository un servicio de ficheros complementarios (actualmente se utiliza SAMBA como servidor de archivos). Puede existir uno o varios módulos, dependiendo del modelo de organización definido.
En esta versión se han integrado las "imágenes sincronizadas" mediante la funcionalidad de "imágenes git", que permite la creació de imágenes por este método, dotando de mayor flexibilidad a la solución.

**OpenGnsys live Client -ogLive-**

En esta versión, se ha actualizado el kernel de oglive (versión 6.8), así como sus componentes internos como ogBrowser para pulir ciertas carencias y asumir nuevas funcionalidades.

Agente ejecutor de órdenes en el cliente, que integra las siguientes funcionalidades:

- Interfaz gráfica de selección de opciones predefinidas por el administrador.
- Ejecución interactiva de funciones del motor de clonación, modo administrador.
- Ejecución de las tareas enviadas desde el módulo OpenGnsys Administrator.

Está compuesto por dos elementos, la primera etapa de carga (tfptboot) y la segunda etapa de carga (ogLive por NFS/SAMBA). En temas posteriores veremos más sobre el ogLive.

**OpenGnsys Clonning Engine**

Librerías de funciones del motor de clonación, instalación y arranque de sistemas operativos en el cliente. En esta versión, se han migrado las diferentes funciones a python para estandarizar el código y se han pulido ciertas funcionalidades.

**OpenGnsys Installer**

Programas de instalación, actualización y desinstalación del sistema, que incluye el generador de configuraciones, el generador de arranque de clientes, el generador de paquetes por componente, etc.
En esta versión 3.0, se cuenta con 4 métodos de instalación
- Instalación "gráfica" mediante Script.
- Instalación mediante paquetes debian
- Instalación y despliegue mediante contenedores docker
- Instalación y despliegue mediante OVAs preconfiguradas, listas para su distribución.


### Esquema

![ogarquitectura.png](../assets/images/screenshots/ogarquitectura.png)

### Modelo de organización

En esta versión 3.0, la organización de la información se ha flexibilizado creando una jerarquía más orgánica. Una Unidad Organizativa puede ser de 4 tipos:

- Centro
- Grupo de Aulas
- Aula
- Grupo de Clientes

Desde el punto de vista de una organización (Universidad), OpenGnsys consta de una consola central de gestión, que se divide en un conjunto de Unidades Administrativas independientes, donde cada una de ellas puede tener asociados uno o varios repositorios de datos que dan servicio a uno o varios grupos de aulas de ordenadores.

Esta distribución permite aplicar una operación a cualquier ámbito desde la Unidad Organizativa (o Unidad de Administración) hasta un determinado cliente en particular.

Así mismo, se ha creado un sistema de filtrado y vistas, que permite operar con grupos de equipos basándonos en criterios como Sistema Operativo, Estado (encendido/apagdao), etc...

![ogintro-model_organiza.png](../assets/images/screenshots/ogintro-model_organiza.png)

## Protocolos de comunicaciones

El proceso de clonación de un sistema de archivos en un número amplio de ordenadores supone un gran volumen de datos transferidos y, por lo tanto, un tiempo importante en el despliegue de dichos datos. OpenGnsys intenta mitigar estos impactos implantando varios métodos para realizar las transferencias de datos, utilizando 3 protocolos de comunicaciones diferentes.

Los protocolos que podemos utilizar para las operaciones de clonación son los siguientes:

- **Unicast**: se transmiten todos los datos independientemente a cada uno de los clientes afectados. El volumen de información enviada es igual al tamaño de la imagen multiplicado por el número de clientes. Este es el método más sencillo y básico, pero el menos eficiente. Se utiliza como protocolo de reenvío ante un fallo en transmisión de cualquiera de los otros métodos.

- **Multicast**: se transmiten los datos simultáneamente a todos los clientes de la sesión, con lo que la imagen se envía una única vez. Este método es muy eficiente, pero no es compatible con algún tipo de hardware de comunicaciones. Deben indicarse parámetros específicos para la sesión, tales como dirección IP de Multicast, puerto de conexión y velocidad de la transmisión.

- **Bittorrent (P2P)**: el repositorio va transmitiendo trozos aleatorios de la imagen a cada uno de los clientes que forman parte del enjambre. Cuando un cliente recibe un trozo completo, también lo retransmite al resto de equipos, hasta que todos terminan por completar la transferencia de información. Este protocolo es muy eficiente, aunque consume gran parte del ancho de banda de la red, requiere que los datos se almacenen previamente en la caché local de cada cliente, y es necesario especificar parámetros como el número máximo de clientes, si van a participar o no en la difusión y el tiempo que permanecerán transmitiendo tras recibir todos los datos. Además, los protocolos P2P pueden estar filtrados en algunas redes de comunicaciones.

El proceso de generación de una imagen del modelo y el envío a su repositorio se realiza siempre mediante el protocolo Unicast, puesto que la comunicación sólo involucra a un emisor (el cliente modelo) y a un receptor (el repositorio de imágenes).

Se recomienda que el alumno evalúe los distintos protocolos de restauración en su entorno de operaciones, para comprobar cuáles de ellos son compatibles con su red de datos y cuál puede resultar más eficiente en cada caso.

![ogintro-protocolos.png](../assets/images/screenshots/ogintro-protocolos.png)

## Conceptos básicos de operación

El modo de trabajo con el sistema OpenGnsys requiere que los administradores del sistema tengan un conocimiento de algunos conceptos básicos de operación.

**Incorporar nuevos ordenadores**

Proceso para dar de alta nuevos equipos en el sistema, incluyendo primero sus datos en la configuración del servicio DHCP y posteriormente copiando esta información en la consola web de administración. Debe tenerse en cuenta que OpenGnsys sólo utiliza datos DHCP estáticos.

**Secuencia de inicio**

Orden de preferencia de ejecución tras el encendido de un ordenador. Un cliente OpenGnsys debe configurarse para que el primer dispositivo de arranque sea la interfaz de red. Por motivos de seguridad y control, puede ser conveniente deshabilitar el inicio directo desde los dispositivos locales.

**Cliente OpenGnSys**

Equipo que está dado de alta en el sistema y que, al encenderse, OpenGnsys le ofrece sus datos de conexión (mediante DHCP) y su proceso de arranque por defecto (usando PXE).

**Proceso de arranque**

Secuencia de ejecución que permite cargar el sistema operativo del ordenador. OpenGnsys ofrece la posibilidad de elegir entre un sistema operativo ya instalado en la máquina o un pequeño sistema GNU/Linux propio utilizado para gestionar las operaciones de clonación del equipo. El proceso de arranque estándar de un cliente OpenGnsys termina ejecutando el OpenGnsys Browser.

**OpenGnsys Browser**

Navegador web que muestra al usuario el menú de selección de operaciones para un determinado cliente, el cual cuenta con 2 modos de operación: usuario (que solo dispone del menú y de la barra de estado) y administración (que además incluye una barra de direcciones, una consola de mensaje de salidas y una terminal de ejecución de comandos).

**Menú**

Conjunto de opciones que el administrador ofrece al usuario y que son mostradas por el Browser. Puede definirse un menú de inicio normal (que habitualmente incluye operaciones de arranque de sistemas operativos, restauración de sistemas de archivos y apagado del equipo) y un menú opcional de administración (que además puede contar con operaciones predefinidas de gestión del equipo, como la creación de imágenes).

**Cliente modelo**

Ordenador que debe tener instalado y bien configurado todo el software que debe ser clonado y que, para evitar problemas de post-configuración, debe tener una arquitectura similar a los equipos receptores de la imagen generada. Sin embargo, no es necesario que este cliente mantenga la misma distribución y tamaño de particiones que el resto, aunque es recomendable.

**Grupo de ordenadores**

Conjunto de clientes que normalmente son iguales (comparten un mismo perfil de hardware) o que están ubicados en la misma sala, y que comparten una misma distribución de instalación y unos datos de post-configuración.

**Imagen de sistema de archivos**

Fichero que contiene una copia exacta de uno de los sistemas de archivos del cliente modelo. OpenGnsys puede mantener varios ficheros asociados a una imagen, tales como, suma de comprobación y datos de transmisión para el protocolo Bittorrent.

**Post-configuración**

Secuencia de órdenes que permite la personalización independiente para cada cliente, que se ejecuta tras el proceso de clonación de un sistema de archivos y que puede constar de operaciones de creación, borrado o edición de ficheros.

**Caché local**

Repositorio de datos local del cliente que acelera el proceso de clonación evitando la necesidad de conexión con el repositorio remoto y que almacena los datos de las imágenes propias, sus datos de post-configuración y, opcionalmente, los ficheros del proceso de arranque del cliente. La caché local es un sistema de archivos que normalmente está formateado como Ext4 y que suele estar alojado en la 4ª partición del disco 1.

## La interfaz web

OpenGnsys Web Administrator es una consola de gestión que permite manejar los clientes de una unidad organizativa, realizando un conjunto de operaciones sobre los mismos, tanto las predefinidas por el sistema como aquellas personalizadas por los operadores.

### Descripción general

La consola web se divide en una serie de espacios principales:

1. Barra superior con los botones de configuración y estado.
2. Zona izquierda con el arbol de módulos con los que operar.
3. Zona derecha con los formularios de operación y de resultados.

![ogintro-webconsole.png](../assets/images/screenshots/ogintro-webconsole.png)

Los objetos principales a los que se tiene acceso según las distintas herramientas de la barra de menú son:

- **Grupos**: distribución jerárquica de la unidad organizativa basada en grupos de aulas, aulas, grupos de ordenadores y ordenadores.
- **Acciones**: lista de comandos básicos y agrupación de procedimientos y tareas definidos por el administrador. Las acciones se ejecutan sobre los objetos del árbol de aulas.
- **Subredes**: este es el módulo de administración del servicio de DHCP (ogDHCP).
- **Boot**: este es el módulo de administración del servicio de arranque de equipos (ogBoot).
- **Calendarios**: esta funcionalidad permite gestionar la disponibilidad de acceso, según calendarios definidos, de los equipos de las aulas para RemotePC
- **Software**: permite administrar los diferentes perfiles de software para los equipos cliente.
- **Repositorios**: este es el módulo que permite administrar el componente ogRepository, que integra las imágenes monolíticas, las imágenes sincronizadas (git), así como su administración mediante la nueva API integración.
- **Menús**: la lista de menús de inicio que pueden ser asignados a los objetos del árbol de las aulas.

En este tipo de menús se encuentran, entre otros, los siguientes tipos de operaciones principales:

- **Comandos**: submenú de acciones básicas predefinidas que se ejecutan sobre elementos del árbol de aulas.
- **Asistentes**: submenú de comandos complejos que permiten cierta personalización a la hora de su ejecución.
- **Procedimientos**: secuencias ordenadas de comandos con parámetros personalizados.
- **Tareas**: comandos que se ejecutan sobre un determinado ámbito en particular y que pueden ser programados para ejecutarse en momentos determinados.
- **Colas de acciones**: listas de acciones que están pendientes de ejecución en un ámbito determinado.

## Otros elementos importantes

### NetBoot Avanzado

Esta funcionalidad, se ha integrado en el módulo "ogBoot" que ahora cuenta con una API para interacción y administración.

Herramienta que permite seleccionar el tipo de arranque de la totalidad o parte de los clientes de una determinada aula, eligiendo entre los distintos métodos de inicio.

OpenGnSys define por defecto 5 métodos de inicio:

**Arranque local sobre el primer disco (por defecto):**
- Arranque local de la 1ª partición del disco.
- Arranque local de la 2ª partición del disco.
- Arranque local de la 3ª partición del disco.

**Arranque de un sistema operativo –ogLive- para la clonación de equipos:**
- Arranque en red con el Browser en modo usuario (ogLive).
- Arranque en red con el Browser en modo administrador (ogLiveAdmin).

El netboot soporta el arranque de equipos con BIOS legacy y de tipo UEFI.

El netboot permite ampliar las opciones de arranque para un segundo o tercer disco.

### Menús

Un menú es una página web modificada o una lista de ítems que se le presenta al Browser del cliente como página de inicio. Suele contar con una serie de opciones para el arranque de sistemas operativos instalados, la manipulación de datos locales o la ejecución de acciones predefinidas sobre dicho cliente.

Los menús que pueden definirse en la consola web de administración pueden clasificarse según la forma en que han sido generados:

**Menú automático**  
Lista de elementos generada a partir de los procedimientos definidos.

**Menú personalizado**  
Página web creada en HTML modificado que puede incluir URLs con comandos o scripts que se ejecutan sobre el cliente.

Asimismo, cada menú puede clasificarse según el tipo de acceso requerido:

**Menú público**  
Página y lista de elementos que pueden ser ejecutados por cualquier usuario.

**Menú privado**  
Página o lista de ítems que solo pueden ser ejecutados tras introducir la clave del usuario administrador.

### Programación de tareas

La programación de ejecución de tareas permite gestionar fácilmente el lanzamiento de dichas tareas sobre sus ámbitos de ejecución en determinados momentos.

Una programación puede constar por varios elementos cronológicos distintos, que permiten lanzar la tarea según las necesidades temporales, pudiendo indicar los días e incluso las horas, marcándolas sobre un calendario.

## Referencias bibliográficas

[Sitio web del proyecto OpenGnsys](http://www.opengnsys.es)

## Para citarnos

Para incluir la cita de esta fuente puede copiar y pegar el siguiente texto:

- Debes incluir en tu obra la licencia CC siguiente:
  <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licencia de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br />Este obra está bajo una <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional</a>.
