Licencia

Copyright (C)  2022  Soleta Networks
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

1. Introducción a OpenGnsys

Esta introducción a OpenGnsys explica qué es OpenGnsys como proyecto y para qué sirve. También se aclara la existencia de OpenGnsys Enterprise y su aporte al proyecto, donde se hace un repaso de la arquitectura y componentes.

1.1. ¿Qué es OpenGnsys?

OpenGnsys es un software de código abierto para la clonación y gestión de equipos de escritorio en entornos virtuales y "bare metal". OpenGnsys proporciona un panel de control centralizado que permite a los administradores de sistemas desplegar imágenes de sistemas operativos de manera masiva.

OpenGnsys incluye una solución para el arranque de los equipos mediante Wake-on-LAN (WoL) y la descarga de un sistema operativo "live" (que se carga en memoria RAM) mediante PXE y TFTP que permite la realización de tareas administrativas sobre los equipos de escritorio de manera remota.

1.2. ¿Qué incluye OpenGnsys Enterprise?

OpenGnsys Enterprise proporciona un entorno listo para producción que incluye las últimas características y correcciones de errores para OpenGnsys. OpenGnsys Enterprise simplifica el despliegue de OpenGnsys y ayuda a mantenerlo actualizado de forma incremental gracias al uso del gestor de paquetes APT.

1.2.1. Arquitectura y componentes en OpenGnsys Enterprise

image

La arquitectura de OpenGnsys Enterprise concentra la gestión de las comunicaciones en un servidor principal, intermediario entre los usuarios y los equipos a gestionar.

ogServer es el servidor principal de OpenGnsys Enterprise. Expone una API REST HTTP para su integración con los distintos front-ends. También establece un canal de comunicación con los clientes. Se encarga de gestionar todas las comunicaciones con la base de datos.

Las operaciones sobre la base de datos pasan a ser única responsabilidad del ogServer. Al iniciar ogServer se comprueba la versión de la BD y se aplican los cambios necesarios en caso de no estar actualizada. No es necesario el mantenimiento por separado de ficheros SQL con diferencias entre versiones.

Los usuarios pueden usar diferentes interfaces gracias a que ogServer expone su funcionalidad mediante una API REST HTTP. Esto también permite que una misma interfaz se pueda conectar a varios ogServers. La distribución del servidor en varios puntos de conexión evita que un fallo en un servidor pueda dejar inoperativa a toda una institución.

ogLive es una distribución Linux usada en OpenGnsys en el arranque por red (PXE). Se ejecuta en la memoria RAM por lo que permite la ejecución de tareas administrativas sobre los discos de los clientes (particionar, formatear, clonar y restaurar).

ogClient es un demonio que se ejecuta en los clientes para su control. Se comunica con el ogServer y soporta Linux y Windows. Se encarga de ejecutar las tareas administrativas sobre los clientes y reportar su estado de vuelta al servidor.

ogCP es una interfaz web (front-end). Está escrito usando el framework web Flask, que destaca por su simpleza y flexibilidad. Soporta la comunicación con múltiples ogServer, unificando toda la información y capacidad de gestión en un único panel administrativo.

ogCLI se ofrece como interfaz alternativa a la web, permite realizar tareas administrativas desde una terminal y aumenta la programabilidad del entorno. Posibilita la creación de scripts personalizados, por ejemplo para su ejecución desatendida. Su salida por pantalla es JSON válido que puede ser consumido por otras aplicaciones y puede servir como punto de partida para programar tareas administrativas más complejas.

tiptorrent es un nuevo método de transferencia distribuido que se desarrolla para solventar los errores y limitaciones existentes con multicast y BitTorrent. Al contrario que Multicast, tiptorrent es unicast, facilitando su uso sin requerir una configuración previa de la infraestructura de red. El método de distribución es más sencillo que el enfoque P2P puro que usa BitTorrent gracias a que es un servidor principal el que se encarga de orquestar como los clientes comparten las imagenes entre ellos.

python-libfdisk un proyecto que provee bindings de la biblioteca libfdisk para Python. Permite trabajar con la biblioteca libfdisk directamente desde Python. Mejora la integración con Python, exponiendo la biblioteca y sus estructuras dentro de Python como clases y métodos. Es una mejora frente a la invocación de subprocesos de aplicaciones que utilizan dicha biblioteca. Además, python-libfdisk puede ser usado fuera del entorno de OpenGnsys.

2. Instalación y actualización de OpenGnsys Enterprise

Recomendaciones, requisitos, y pasos para la instalación y actualización de OpenGnsys.

2.1. Recomendaciones previas a la instalación de OpenGnsys Enterprise

Las siguientes recomendaciones sirven para disponer de un entorno más profesional y adecuado sobre el que desplegar OpenGnsys Enterprise.

2.1.1. Virtualización: QEMU, KVM y LibVirt

Recomendamos la instalación del servidor de OpenGnsys en un entorno virtualizados basados en las tecnologías Open Source Libvirt/QEMU/KVM junto con técnicas modernas y maduras de paravirtualización VirtIO para aceleración de la Entrada/Salida por software. Libvirt/QEMU/KVM ofrece una alternativa OpenSource robusta y fiable a las tecnologías de virtualización de VMWARE.

Los procesadores desde el 2010 incluyen extensiones de virtualización VT-d/AMD-V para acelerar la ejecución de la máquina virtual sin pérdida de rendimiento apreciable, por lo que no es necesario equipamiento moderno para desplegar OpenGnsys en un entorno virtualizado.

El despliegue de QEMU/KVM en productivo no es nada novedoso, esta pila de software se emplea en infraestructura de proveedores de la nube tales como Google Cloud Platform, Amazon Web Services, RackSpace, NASA/NOAA, RackSpace, IBM, SOFTLayer y OVH.

Libvirt ofrece un front-end gráfico y de línea de comandos de fácil uso que facilita la interacción con el software de máquina virtual QEMU sobre el que se despliega. KVM provee la aceleración de las máquinas virtuales por hardware.

El despliegue del servidor de OpenGnsys en un entorno virtualizado trae consigo beneficios importantes:

  • Realización de "snapshots" de las máquinas virtuales. Permite copias de seguridad en caliente,con la VM encendida, y en frio, con la VM apagada.

  • Migraciones de la máquina virtual a un nuevo hardware cuando esté disponible sin tener que instalar de nuevo el servidor de OpenGnsys.

  • Creación de una segunda máquina virtual de preproducción para el despliegue inicial de actualizaciones de OpenGnsys sobre una serie de aulas de pruebas para validar la correcta operatividad antes de la puesta en producción.

2.2. Requisitos de OpenGnsys Enterprise

A continuación se listan los requisitos indispensables para poder instalar y desplegar OpenGnsys Enterprise.

2.2.1. Sistema Operativo: Ubuntu 20.04

El servidor de OpenGnsys Enterprise requiere Ubuntu 20.04 LTS (Focal) para su despliegue.

2.3. Instalación de OpenGnsys Enterprise

La instalación y puesta a punto de OpenGnsys Enterprise se realiza a través de un instalador ofrecido en la web de OpenGnsys Enterprise. El instalador hace uso de los paquetes .deb creados por Soleta Networks.

Una vez descargado el instalador de la web de OpenGnsys Enterprise (https://opengnsys.soleta.eu/download) procederemos a su ejecución:

$ wget https://opengnsys.soleta.eu/installer.sh
# bash installer.sh

Durante su ejecución, el script de instalación solicitará al usuario:

  • Usuario y contraseña para la base de datos, ogCP y consola web clásica

  • Dirección IP para conexiones a la base de datos

  • Dirección IP del servidor de OpenGnsys

  • Contraseña para conexiones Samba

Solicitud de usuario y contraseña para la base de datos durante la ejecución del instalador
Please specify your Database and OpenGnsys web console user name (default: usuog):
Please specify your Database and OpenGnsys web console password (default: passusuog):
Solicitud de la IP del servidor de OpenGnsys (usado principalmente para configurar ogServer)
Please introduce your server IP address. This is the IP address used by
ogServer and Samba services If your server has multiple interfaces, select the
one that allows you to communicate with your clients
Server IP:
Repositorios APT de Soleta Networks

El instalador de OpenGnsys Enterprise deja configurado el repositorio de APT alojado en los servidores de Soleta Networks.

Fichero de configuración de APT con el repositorio adicional de Soleta Networks
$ cat /etc/apt/sources.list.d/soleta.list deb
[trusted=yes] https://opengnsys.soleta.eu/ubuntu-focal/ /

2.4. Actualización de OpenGnsys Enterprise

Los paquetes tienen como objetivo facilitar no solo el proceso de instalación de OpenGnsys, sino también la actualización de los distintos componentes a través de APT.

De manera que el administrador sólo tenga que ejecutar en la terminal:

# apt update

# apt upgrade

para mantener su instalación de OpenGnsys actualizada.

2.5. Exportar e importar datos de una instalacion de OpenGnsys 1.1.1c

Cuando es necesario conservar los datos de una instalación anterior de OpenGnsys se pueden llevar a cabo los pasos que se indican a continuación para migrar a OpenGnsys Enterprise.

En https://github.com/opengnsys/OpenGnsys/tree/master/installer encontramos los scripts opengnsys_export.sh y opengnsys_import.sh que nos permiten guardar los datos de nuestro servidor antiguo en un archivo tgz e importarlos en el nuevo.

En la exportación se guardan la configuración de DHCP, los archivos y plantillas PXE, las páginas de inicio y la configuración de la consola. Además, irá incluida una copia de la base de datos.

Para asegurarnos de tener la versión apropiada del esquema de la base de datos para OpenGnsys Enterprise se recomienda usar opengnsys_export.sh. Si bien conviene revisar los procedimientos que se hayan podido crear con anterioridad puesto que cambios en los comandos puede repercutir en su funcionamiento.

Para exportar los datos de un servidor se utiliza el script opengnsys_export.sh:

/opt/opengnsys/lib/opengnsys_export.sh nombre_backup.tgz
No es conveniente situar el fichero de backup dentro de /opt/opengnsys ya que la carpeta se borrará en caso de desinstalar OpenGnsys (opengnsys_uninstall.sh).

Para importar los datos al nuevo servidor se utiliza el script opengnsys_import.sh tal y como se muestra en el ejemplo:

/opt/opengnsys/lib/opengnsys_import.sh nombre_backup.tgz

El script de importación de comunidad además actualiza el esquema de base de datos para estar en la última versión de comunidad. Una vez completa la importación se debe revisar la configuración de los siguientes componentes:

  • Servidor DHCP.

  • Configuración de ips de repositorios y otros servicios como NTP, (para la consola web clásica).

  • Regenerar las plantillas de arranque por red de los equipos.

3. Componentes en OpenGnsys Enterprise

A continuación se detallan los componentes que forman OpenGnsys Enterprise, explicando su función en el ecosistema y su uso.

3.1. ogServer: Servidor principal de OpenGnsys Enterprise

El ogServer es el componente de orquestación que ofrece una API REST HTTP para recibir órdenes administrativas y las envía a los equipos clientes conectados a OpenGnsys. El ogServer mantiene las información los clientes y su estado, tales como la velocidad de enlace y el resultado del último comando ejecutado.

Los front-ends de administración se comunican con el ogServer a través de una API REST HTTP. Para el cuerpo de las peticiones se usan el formato JSON. ogServer utiliza una base de datos MySQL para el almacenamiento de toda la información relacionada con la gestión con OpenGnsys. Por ejemplo, en la base de datos se guarda todo el esquema de centros, aulas y equipos que hemos definido.

3.1.1. Fichero de configuración: ogserver.json

El archivo de configuración para ogServer se encuentra en /opt/opengnsys/etc/ogserver.json. Permite indicar la IP, puerto, token donde escuchará el proceso de ogServer, autenticación para la conexión a la base de datos, además de interfaz por defecto para Wake On Lan y directorio donde guardar imágenes creadas por los clientes (también denominado repositorio).

{
        "rest" : { (1)
                "ip" : "127.0.0.1",
                "port" : "8888",
                "api_token": "5a5ca1172136299640a9f47469237e0a"
        },
        "database" : { (2)
                "ip" : "127.0.0.1",
                "port" : "3306",
                "name" : "opengnsys",
                "user" : "mysql",
                "pass" : "mysql"
        },
        "wol" : { (3)
                "interface" : "lo"
        },
        "repository" : { (4)
                "directory" : "/opt/opengnsys/images"
        }
}
1 Configuración de red para el proceso de ogServer: IP, puerto y valor del token para autenticar peticiones de otras aplicaciones que traten de comunicarse con ogServer.
2 Autenticación para la base de datos: IP y puerto donde escucha MySQL, nombre de la base de datos, usuario y contraseña.
3 Interfaz por defecto para el envío de paquetes WakeOnLan. Aplicable cuando el servidor donde se ejecuta ogServer posee más de una interfaz de red.
4 Configuración del repositorio de imágenes. Indica la carpeta donde se almacenan y sirven las imágenes para los clientes.

3.2. ogClient: Cliente de OpenGnsys para ogLive, Linux y Windows

ogClient es un proceso que se ejecuta sobre los clientes que queremos administrar. Se encarga de recibir y procesar las peticiones del ogServer. ogClient ejecuta tareas administrativas en base a las peticiones del ogServer. Por ejemplo, particionar y formatear un cliente, clonar un cliente o restaurar un cliente.

Actualmente, ogClient implementa parte de la funcionalidad administrativa en Python y otra parte en Bash. Futuras versiones de ogClient implementarán toda la funcionalidad en Python. Para conseguir esto se han desarrollado una primera versión de bindings en python para la biblioteca libfdisk, permitiendo hacer uso directo de la biblioteca desde Python y evitando la invocación de subprocesos de aplicaciones que utilizan la biblioteca.

Además de la ejecución de comandos, con ogClient los clientes reportan información adicional sobre su estado, el éxito del último comando ejecutado o su velocidad de enlace.

ogClient es una aplicación multiplataforma y permite la administración de clientes ogLive, Linux y Windows. La funcionalidad de ogClient sobre Linux y Windows es limitada porque no se puede realizar modificaciones sobre los discos.

Los clientes puede funcionar de distintos modos según la plataforma. Cada modo expone un conjunto distinto de operaciones administrativas. Los modos soportados actualmente son:

  • live: ejecutado en ogLive, soporta operaciones administrativas sobre los discos.

  • linux: ejecutado en sistemas operativos GNU/Linux.

  • windows: soporta Windows 10 y 11.

3.2.1. Fichero de configuración: ogclient.json

El archivo de configuración para ogClient se encuentra en /opt/opengnsys/client/ogClient/cfg/ogclient.json. Permite indicar la IP y puerto donde el ogServer espera la conexión de los clientes, el nivel de log, el modo de funcionamiento y las credenciales de samba.

{
        "opengnsys": {(1)
                "ip": "192.168.56.10",
                "port": 8889,
                "log": "DEBUG",
                "mode": "live",
                "url": "https://192.168.56.10/opengnsys/varios/menubrowser.php",
                "url_log": "http://localhost/cgi-bin/httpd-log.sh"
        },
        "samba": {(2)
                "activate": true,
                "user": "opengnsys",
                "pass": "og"
        },
        "vnc": {(3)
                "activate": true,
                "pass": "ogvnc"
        }
}
1 Conexión con el ogServer y funcionamiento del ogClient: IP y puerto para la conexión con el ogServer, nivel de logging (DEBUG, INFO, WARNING, ERROR y CRITICAL), modo de operación (live, linux, windows y virtual) y los dos últimos enlaces sirven para obtener el menú de inicio de sesión y el log en tiempo real.
2 Credenciales del servidor samba para el modo ogLive.
3 (Solo VDI) Opciones para escritorio remoto.

3.2.2. Instalación en Linux

ogClient para Linux está soportado en versiones de Ubuntu iguales o superiores a 20.04. Existe un paquete .deb disponible en la sección de descargas de la web de OpenGnsys Enterprise en https://opengnsys.soleta.eu/download

A continuación se enumeran los pasos para su instalación:

  1. Descargar el paquete .deb de ogClient para Linux.

  2. Instalar en el sistema con el comando sudo dpkg -i {paquete} (sustituyendo {paquete} por el nombre del paquete de ogClient para linux)

    ogclient lin dpkg
  3. Durante la instalación especificar la IP del ogServer

    ogclient lin ogserver
  4. Para reportes de inicio de sesión activar el servicio de usuario de la siguiente manera:

    ogclient lin ses service

3.2.3. Instalación en Windows

Existe un instalador para Windows disponible en la sección de descargas de la web de OpenGnsys Enterprise en https://opengnsys.soleta.eu/download

ogclient win download

Para su instalación basta con ejecutar el instalador. Durante el proceso se solicita al usuario indicar la ip del ogServer al cual ogClient para Windows se conectará.

Una vez finalizado el proceso de instalación ogClient para Windows está listo y funcionando como un servicio del sistema. Además reporta inicios y cierres de sesión de usuario.

4. Integración con el servidor de DHCP

En este apartado se describe la integración de OpenGnsys con el servidor de DHCP ISC.

4.1. Añadir un equipo cliente al servidor DHCP

Es necesario asignar una IP a los equipos clientes a través del servidor DHCP para habilitar el arranque por red (PXE), puedes leer más detalles en esta sección.

A continuación se describen los pasos para asignar una dirección IP estática para un equipo cliente a través de la configuración del servidor DHCP (dhcpd.conf)

Para ello bastará con incluir en el fichero /etc/dhcp/dhcpd.conf una entrada host con los datos del cliente: un nombre, dirección MAC y dirección IP a asignar.

A continuación se encuentra una entrada de ejemplo para un equipo con MAC 00:26:b0:e6:bc:18 al cual se le asigna la dirección IP 10.141.10.106.

host nombre_cliente { hardware ethernet 00:26:b0:e6:bc:18; fixed-address 10.141.10.106; }

Una vez actualizada la configuración del servidor DHCP debemos reiniciar el servicio ejecutando:

systemctl restart isc-dhcp-server.service

4.2. Depuración de problemas del servidor de DHCP

A continuación se listan mensajes de error o avisos habituales que se pueden encontrar en el log del servidor DHCP.

Puedes consultar el log del servidor DHCP ejecutando journalctl -u isc-dhcp-server

4.2.1. "DHCPDISCOVER from …​ : no free leases"

Si nos encontramos en el log del servidor DHCP mensajes como el siguiente:

DHCPDISCOVER from d0:bf:9c:03:3b:40 via eth0: network 10.1.0.0/16: no free leases

En tal caso se ha recibido una petición de un cliente cuya dirección física (MAC) no tiene asignada una dirección IP estática.

Asegúrate de:

  • La configuración del servidor DHCP incluye una asignación de IP estática para la MAC del cliente.

  • Reiniciar el servidor después de haber realizado cambios en la configuración del servidor DHCP.

5. ogCLI: interfaz de línea de comandos para OpenGnsys Enterprise

ogCLI es la interfaz de línea de comandos para OpenGnsys Enterprise. Ofrece un alternativa al panel de control web y permite al usuario ejecutar las tareas de administración de los equipos clientes de manera programática.

¿Por qué administrar desde la línea de comandos?

El uso de la línea de comandos tiene una serie de ventajas respecto a interfaces gráficas en términos de programabilidad, repetición y ejecución no supervisada.

Se pueden definir tareas complejas con scripts, y programar su ejecución de forma no supervisada usando soluciones como cron.

5.1. Instalación de ogCLI

ogCLI se instala por defecto en OpenGnsys Enterprise al usar el script de instalación disponible en https://opengnsys.soleta.eu/download

ogCLI se encuentra empaquetado en los repositorios APT de Soleta Networks. Su instalación es sencilla, ejecutando el siguiente comando:

# apt install ogcli

5.2. Fichero de configuración: ogcli.json

El fichero de configuración reside en /opt/opengnsys/etc/ogcli.json. Este fichero permite indicar la dirección IP, el puerto y el API token del ogServer al que queremos conectarnos.

La API token de ogServer puede consultarse en su fichero de configuración
{
	"api_token" : "XIW5aYT7sO58YQPn0GIvmo6YJiW0WWWkb", (1)
	"ip": "192.168.56.10", (2)
	"port": 8888 (3)
}
1 API token de ogServer.
2 Dirección IP de ogServer.
3 Puerto donde escucha el ogServer, por defecto 8888.

5.3. Obtener ayuda para los comandos en ogCLI

La mayoría de los comandos que podemos ejecutar en ogCLI disponen de la opción --help para mostrar opciones específicas y subcomandos disponibles.

Podemos obtener todos los comandos disponibles con ogcli --help. Si un comando requiere indicar un subcomando adicional, estos pueden obtenerse a través de ogcli [comando] --help.

El siguiente ejemplo muestra los comandos disponibles en ogCLI
$ ogcli --help
usage: ogcli [-h] [{create,list,restore,send,set,setup}]

positional arguments:
  {create,list,restore,send,set,setup}
                        Subcommand to run

optional arguments:
  -h, --help            show this help message and exit
El siguiente ejemplo muestra los Subcomandos disponibles para ogcli list
$ ogcli list --help
usage: ogcli list [-h] {clients,scopes,modes,hardware,client,images,disks}

positional arguments:
  {clients,scopes,modes,hardware,client,images,disks}

optional arguments:
  -h, --help            show this help message and exit

5.4. Ejemplos de uso de ogCLI

A continuación se muestran ejemplos de los comandos de ogCLI junto a su salida por pantalla.

5.4.1. Listado del árbol de ámbitos: equipos, carpetas, aulas y centros.

Este comando permite solicitar a ogServer una lista con todos los ámbitos registrados en la base de datos. Un ámbito puede ser un centro, un aula, un equipo o una carpeta. Las carpetas son agrupaciones de aulas o equipos.

Ejemplo para obtener el árbol completo de ámbitos: todos los centros, salas y equipos presentes en la base de datos.
ogcli list scopes

Salida de ejemplo:

{
  "scope": [{(1)
      "id": 1,(2)
      "name": "Unidad Organizativa (Default)",(3)
      "scope": [{(4)
          "id": 1,
          "name": "Soleta",
          "scope": [{
              "id": 1,
              "name": "uefi",
              "scope": [{
                  "id": 2,
                  "ip": "10.141.10.101",
                  "name": "Robertorre",
                  "scope": [],
                  "type": "computer"
                }],
              "type": "folder"
            }],
          "type": "room"
        }],
      "type": "center"(5)
    }]
}
1 Comienzo del listado de ámbitos.
2 ID del ámbito.
3 Nombre del ámbito.
4 Ámbitos descendientes.
5 Tipo de ámbito (Centro, aula, equipo o carpeta).

5.4.2. Listar clientes conectados a ogServer

Con este comando, ogCLI envía una petición a ogServer para recibir una lista con todos los clientes que estén conectados en ese momento.

Como resultado, imprime por pantalla un JSON con la información de los clientes conectados. Incluyendo dirección, modo de operación, resultado del último comando y velocidad de enlace.

Ejemplo para obtener lista con los clientes conectados al ogServer e información sobre su estado
ogcli list clients
Salida de ejemplo: En este ejemplo podemos encontrar dos equipos conectados desde ogLive. Ambos han negociado un canal de comunicación de máximo 1Gbps, además, uno de ellos no ha terminado exitosamente el último comando ejecutado.
{
  "clients": [(1)
    {
      "addr": "192.168.56.11",(2)
      "last_cmd": {
        "result": "success"(3)
      },
      "speed": 1000,(4)
      "state": "OPG"(5)
    },
    {
      "addr": "192.168.56.12",
      "last_cmd": {
        "result": "failure"
      },
      "speed": 1000,
      "state": "OPG"
    }
  ]
}
1 Array JSON con los clientes.
2 Dirección IP del cliente.
3 Resultado de la última operación.
4 Velocidad de enlace del cliente (Mbit/s).
5 Estado del cliente (ogLive: OPG, Linux: LNX, Windows: WIN, ogVDI: VDI, Cliente ocupado: BSY, Intento de arranque por red: WOL_SENT)

5.4.3. Listar detalles de un cliente concreto

Con este comando, ogCLI envía una petición a ogServer para recibir los datos que figuran en la base de datos respecto a un cliente.

Como resultado, imprime por pantalla un JSON con dicha información donde podremos comprobar datos como nombre, dirección MAC, modo de arranque, entre otros.

En este ejemplo buscamos la información del cliente identificado por la ip 192.168.56.11
ogcli list client --client-ip 192.168.56.11
Salida de ejemplo: Obtendremos un JSON con los datos que figuran en la base de datos para tal cliente
{
  "boot": "pxe",
  "center": 1,
  "hardware_id": 0,
  "id": 1,
  "ip": "192.168.56.11",
  "livedir": "ogLive",
  "mac": "0800270E6511",
  "maintenance": true,
  "name": "pc11",
  "netdriver": "generic",
  "netiface": "eth0",
  "netmask": "255.255.255.0",
  "remote": false,
  "repo_id": 1,
  "room": 1,
  "serial_number": ""
}

5.4.4. Listar modos de arranque por red disponibles

Con este comando, ogCLI envía una petición a ogServer para recibir una lista con todos los modos de arranque por red que se han configurado en el servidor.

Imprime por pantalla un listado JSON los nombres de los diferentes modos de arranque.

Este nombre se usa en ogcli set mode.

En el siguiente ejemplo obtendremos la lista de todos los modos de arranque disponibles
ogcli list modes
Salida de ejemplo: La salida es un JSON que incluye los identificadores de los distintos modos de arranque

soportados en la instalación de OpenGnsys.

{
  "modes": [
    "disk1-part2",
    "oglive",
    "disk1",
    "disk1-part3",
    "ogrelive",
    "memtest-pxe",
    "disk1-part1",
    "oglive-admin",
    "unknown"
  ]
}

5.4.5. Cambiar el modo de arranque por red de los clientes

Este comando envía una petición para cambiar la configuración de arranque por red de uno o varios clientes.

Ejemplo para cambiar el modo de arranque a ogLive de todos los equipos del aula con ID 22
ogcli set mode --mode oglive --room-id 22

Para obtener el id del aula se utiliza el comando ogcli list scopes

Salida de ejemplo: Sin errores, no hay salida por pantalla. Podremos comprobar preliminarmente que el modo de arranque ha cambiado consultado los detalles de los clientes con ogcli list client.

5.4.6. Encender equipos por red: Wake On Lan.

Este comando solicita al ogServer el envío del paquete mágico Wake on Lan a los clientes especificados para arrancarlos por red.

ogServer pondrá en estado WOL_SENT a los clientes que no estuvieran conectados a él. Para comprobar que el equipo en efecto ha arrancado podremos comprobar su estado con el comando ogcli list clients.

Arranque por red del equipo con dirección IP 192.168.56.11.
$ ogcli send wol --client-ip 192.168.56.11
Arranque por red del aula con ID 8.
$ ogcli send wol --room-id 8
Arranque por red del centro con ID 26.
$ ogcli send wol --center-id 26

Salida de ejemplo: Sin errores, no hay salida por pantalla.

5.4.7. Particionado y formateo

Este comando sirve para definir el esquema de particiones y formatearlas con el fin de prepararlo para la restauración de imágenes.

Particionado y formateo del primer disco con esquema MBR, una partición linux y otra cache, para el equipo con IP 192.168.56.11.
$ ogcli setup disk \
        --type dos \ (1)
        --num 1 \ (2)
        --part 1,LINUX,EXT4,40G \ (3)
        --part 4,CACHE,CACHE,10G \ (3)
        --client-ip 192.168.56.11 (4)
1 Esquema de partición que queremos que tenga el disco. Se puede elegir el tipo MBR o GPT: --type dos o --type gpt
2 Número del disco objetivo (por defecto 1). Sirve para seleccionar el disco sobre el que queremos trabajar en caso de que el equipo tenga varios.
3 Datos específicos de la partición. Se define el número de la partición, el tipo (EFI, WINDOWS, LINUX o CACHE), el sistema de ficheros (FAT32, NTFS, EXT4 o CACHE) y el tamaño de la partición (M: Megabytes, G: Gigabytes, y T: Terabytes): NUM,TIPO,FS,TAM
4 Cliente(s) objetivo. Se puede mandar esta orden a centro, aulas y clientes.

Salida de ejemplo: Sin errores, no hay salida por pantalla

5.4.8. Listar imágenes del repositorio

Con este comando se solicita al ogServer una lista de imágenes presentes en la carpeta destinada al repositorio de imágenes (Normalmente /opt/opengnsys/images).

ogCLI obtiene las imágenes del servidor donde se encuentra el ogServer. En caso de querer un listado de imágenes de otro repositorio es necesario cambiar la configuración de ogCLI para conectarse al ogServer presente en dicho repositorio.
Ejemplo para listar las imágenes presentes en la carpeta /opt/opengnsys/images.
$ ogcli list images
Salida de ejemplo: Obtendremos información respecto al espacio disponible en el repositorio y un listado de las imágenes presentes.
{
  "disk": {(1)
    "free": 7406645248,
    "total": 52573995008
  },
  "images": [(2)
    {
      "datasize": 5939200000,
      "id": 9,
      "modified": "Thu Jul 28 15:02:47 2022",
      "name": "imgprueba",
      "permissions": "744",
      "repo_id": 1,
      "size": 1869968426,
      "software_id": 1,
      "type": 1
    },
    ...
}
1 Apartado con información sobre el espacio total y disponible de la partición donde está montada la carpeta /opt/opengnsys/images.
2 Array JSON con la información de las imágenes presentes en el repositorio. Los datos de mayor interés son el nombre e ID de la imagen, su tamaño (comprimido y sin comprimir en bytes), fecha de la última modificación e ID del repositorio en el que se encuentra.

5.4.9. Crear imagen de la partición de un cliente modelo

Con este comando podemos iniciar la creación de una imagen de un sistema operativo de un equipo modelo.

Creación de la imagen a partir del primer disco y la primera partición del equipo con IP 192.168.56.11. La imagen tiene el nombre "matematicas1" y la descripción "Windows 10 con Sage", y se guarda en el repositorio con ID 1.
$ ogcli create image --disk 1 --part 1 --name matematicas1 --desc "Windows 10 con Sage"  --repo-id 1 --client-ip 192.168.56.11

Salida de ejemplo: Sin errores no hay salida por pantalla.

5.4.10. Actualizar imagen existente en base a la partición de un cliente modelo

Con este comando podemos realizar la actualización de una imagen creada anteriormente. Este comando debe usarse cuando se quiere sobreescribir una imagen.

Actualización de la imagen con ID 20 a partir de la primera partición y primer disco del equipo con IP 192.168.56.11.
$ ogcli update image --disk 1 --part 1 --id 20 --client-ip 192.168.56.11

Salida de ejemplo: Sin errores no hay salida por pantalla.

5.4.11. Restaurar imagen de sistema operativo en cliente

Con este comando podemos iniciar la restauración de una imagen sobre uno o varios clientes indicados.

Restauración de la imagen con ID 1 sobre la primera partición y disco del cliente con IP 192.168.56.11.
$ ogcli restore image --id 1 --disk 1 --part 1 --client-ip 192.168.56.11

Salida de ejemplo: Sin errores no hay salida por pantalla.

Post configuración personalizada: configureOsCustom

Existe un mecanismo que permite la ejecución de un shell script personalizado en `bash' tras la restauración de una imagen (también referido como script de post-configuración) en `/opt/opengnsys/client/scripts/configureOsCustom.

Si se crea un shell script en la ruta indicada, se invocará en la fase de post-configuración, tras la restauración de un sistema operativo. Este shell script se ejecuta únicamente en el modo ogLive, por lo que no se ejecuta durante el arranque del sistema operativo restaurado en cuestión.

6. ogCP: nuevo panel de administración web

ogCP (OpenGnsys Control Panel) es una interfaz web para OpenGnsys Enterprise y es una alternativa al panel clásico WebConsole. Permite la gestión de múltiples ogServer de forma simultánea. Presenta un panel con estadísticas de uso y el estado general del despliegue.

6.1. Instalación de ogCP

ogCP viene instalado por defecto en instalaciones de OpenGnsys Enterprise al usar el instalador disponible en https://opengnsys.soleta.eu/download. En caso de requerir una instalación manual, ogCP está empaquetado en los repositorios APT de Soleta Networks y pueden ser instalados ejecutando:

# apt install ogcp

6.2. Acceso a ogCP: dirección del servicio.

Puedes acceder al portal de login de ogCP a través del puerto 5000. Por tanto puedes acceder a ogCP en la dirección http://(ip):5000/, sustituyendo (ip) por la dirección de la máquina que ejecuta ogCP.

Por ejemplo, si el servidor de OpenGnsys tiene una interfaz de red configurada con la dirección 10.141.0.1 entonces puedes acceder a ogCP a través de la dirección: http://10.141.0.1:5000

Limitar acceso a ogCP a una interfaz

ogCP se encuentra expuesto a través del puerto 5000 y debe ser accesible desde cualquiera de las direcciones que tengan configuradas todas las interfaces de red presentes en el servidor.

En caso de no querer exponer el acceso a ogCP desde cualquier interfaz presente en el servidor puedes modificar el parámetro --host dentro del fichero /etc/systemd/system/multi-user.target.wants/ogcp.service. Este parámetro nos permite indicar la dirección ip entrante que admitirá únicamente ogCP.

Por ejemplo, si solamente queremos acceder a ogCP a través de una interfaz con dirección 10.141.10.1 podemos restringir el tráfico a ogCP a esa única interfaz modificando ogcp.service de la siguiente manera:

ExecStart=/opt/opengnsys/ogcp/flask/bin/python3 -m flask run --host=10.141.10.1

6.3. Descripción de los apartados de ogCP

A continuación se detallan todos los elementos que presenta los apartados de ogCP. Estos se localizan en la barra de navegación de la parte superior de la web. Los botones son: Panel principal, Comandos, Imágenes, Gestión de ámbitos, Servidores y Usuarios.

6.3.1. Validación de usuario: Login/Ingreso

ogcp login

Lo primero que muestra el ogCP al entrar por primera vez es la vista de Login. Para ingresar basta con introducir alguno de los usuarios y contraseñas que hemos configurado.

Si tienes problemas para acceder al panel de configuración, revisa el fichero de configuración y asegúrate de que los usuarios están definidos correctamente.

6.3.2. Panel principal: información y estadísticas generales de los servidores