226 lines
12 KiB
Markdown
226 lines
12 KiB
Markdown
## Introducción a ogRepository
|
|
|
|
|
|
|
|
El componente **ogRepository** se encarga de almacenar, gestionar y distribuir las imágenes del sistema operativo utilizadas para clonar equipos en entornos de laboratorio o aula.
|
|
|
|
Funciona en conjunción con el `ogServer` y los clientes, proporcionando una interfaz web centralizada para realizar todas las operaciones de gestión: visualización, importación, exportación, verificación de integridad y eliminación de imágenes.
|
|
|
|
### Arquitectura y Flujo de Trabajo
|
|
1. **Creación:** Las imágenes se crean desde un cliente arrancado via `ogLive`.
|
|
2. **Almacenamiento:** Se almacenan en el directorio del `ogRepository` asignado a ese cliente.
|
|
3. **Consulta:** El `ogServer` consulta al repositorio para obtener la lista de imágenes disponibles.
|
|
4. **Restauración:** Durante una operación de clonación, la máquina cliente descarga la imagen desde el repositorio (vía Unicast, Multicast o P2P/BitTorrent).
|
|
|
|
## Tipos de Imágenes Gestionadas
|
|
|
|
ogRepository es compatible con dos tipos de imágenes, cada una diseñada para diferentes casos de uso:
|
|
|
|
| Tipo | Descripción | Formato | Caso de Uso Ideal |
|
|
| :--- | :--- | :--- | :--- |
|
|
| **Imágenes Monolíticas** | Captura completa y comprimida de una partición. Es una réplica exacta del sistema de archivos en el momento de la captura. | Archivo `*.img.zst` (compresión Zstandard) | Entornos estables, imágenes base inmutables, restauraciones rápidas y sencillas. |
|
|
| **Imágenes Git** | Imágenes versionadas que almacenan cambios incrementales. Gestionadas por el componente `OgGit`. | Repositorio Git (normalmente en Forgejo/Gitea) | Entornos con cambios frecuentes, needing auditoría de cambios, reversión de estados y optimización de espacio y ancho de banda. |
|
|
|
|
### Archivos Asociados a Imágenes Monolíticas
|
|
|
|
Cada imagen monolítica genera una serie de archivos auxiliares esenciales para su gestión e integridad:
|
|
|
|
| Archivo | Propósito |
|
|
| :--- | :--- |
|
|
| **`<nombre>.img.zst`** | La imagen comprimida en sí misma (formato Zstandard). |
|
|
| **`<nombre>.sum`** | Suma de verificación SHA256 para validar la integridad del archivo de imagen. |
|
|
| **`<nombre>.size`** | Contiene el tamaño de la imagen comprimida, usado para cálculos de progreso. |
|
|
| **`<nombre>.info.checked`** | Metadatos de la imagen (cliente origen, partición, tipo de compresor, tamaño real, etc.). |
|
|
| **`<nombre>.torrent`** | Metadatos para habilitar la distribución eficiente de la imagen via protocolo BitTorrent (P2P). |
|
|
|
|
### Acciones disponibles en la interfaz web
|
|
|
|
- Consultar el listado de imágenes disponibles en el repositorio.
|
|
- Ver los detalles técnicos de cada imagen: nombre, tamaño, cliente origen, partición, tipo de clonador, etc.
|
|
- Comprobar su integridad mediante sumas de verificación.
|
|
- Importar imágenes externas previamente generadas.
|
|
- Exportar imágenes para su traslado o respaldo en otros entornos.
|
|
- Eliminar imágenes individualmente o en bloque.
|
|
|
|
### Consideraciones
|
|
|
|
- Cada cliente debe tener asignado un repositorio de imágenes en su configuración. Las imágenes creadas se almacenarán en dicho repositorio.
|
|
- Las imágenes deben ser creadas a partir de clientes previamente arrancados mediante ogLive y correctamente preparados (sin usuarios conectados, sin procesos en ejecución críticos, etc.).
|
|
- Se recomienda mantener una nomenclatura clara y estandarizada para facilitar la identificación de las imágenes.
|
|
- El espacio del servidor debe ser suficiente para albergar las imágenes generadas, especialmente en el caso de restauraciones o sincronizaciones masivas.
|
|
|
|
---
|
|
|
|
## Alta de un repositorio en la GUI
|
|
|
|
1. Entra en la interfaz web de OpenGnsys con un usuario administrador.
|
|
2. En el menú lateral, pulsa **Repositorios**.
|
|

|
|
3. Pulsa **Añadir repositorio**.
|
|

|
|
4. Rellena el formulario:
|
|
- **Nombre del repositorio:** Un identificador legible (p. ej. `repository-test`).
|
|
- **IP:** La IP del servidor ogRepository (p. ej. `192.168.3.3`).
|
|
- **Puerto SSH:** Valor que utilizará el sistema para algunas acciones como transferir imágenes (p. ej. `22`).
|
|
- **Usuario:** Usuario de sistema con el que ogCore se conectará al repositorio (p. ej. `opengnsys`).
|
|
- **Comentarios:** Información adicional (Opcional).
|
|
5. Pulsa **Guardar**.
|
|
|
|
---
|
|
|
|
### Comprobación rápida
|
|
|
|
- Tras guardar, el nuevo registro debe aparecer en la tabla de **Administrar repositorios**.
|
|
- Usa el botón **Imágenes monolíticas** del repositorio para abrir el inventario de imágenes. Si todo está correcto, verás la lista y podrás pulsar **Ver información** para inspeccionar el JSON.
|
|

|
|
|
|
> **Nota:**
|
|
> Los inventarios que se muestran provienen de `repoinfo.json` / `trashinfo.json` en el servidor ogRepository.
|
|
> Si el repositorio es nuevo, estos ficheros estarán vacíos hasta que se cree la primera imagen desde un cliente.
|
|
|
|
---
|
|
|
|
## Asignar un repositorio a un cliente
|
|
|
|
1. Ve a **Grupos** (o al listado donde gestionas los clientes).
|
|
2. En la tarjeta del cliente, abre el menú ⋮ y pulsa **Editar**.
|
|
3. En el formulario, localiza el campo **Repositorios** y selecciona el repositorio que acabas de crear (p. ej. `repository-test`).
|
|
4. Revisa el resto de campos (OgLive, interfaz, MAC, IP, plantilla PXE, etc.) y pulsa **Guardar**.
|
|

|
|
|
|
Esta asignación tiene las siguientes implicaciones:
|
|
|
|
- Ese cliente tendrá acceso a las imágenes almacenadas en el repositorio asignado, pudiendo restaurar cualquiera de ellas según sea necesario.
|
|
- Las imágenes creadas desde ese cliente se guardarán automáticamente en el repositorio seleccionado.
|
|
- Si tienes varios repositorios, puedes asignar repos diferentes a distintos clientes o aulas, optimizando el tráfico de red.
|
|
|
|
---
|
|
|
|
## Verificación
|
|
|
|
- Desde **Repositorios → Imágenes monolíticas** del repo asignado, confirma que la imagen objetivo existe.
|
|
- En el cliente (cuando arranque ogLive), podrás lanzar operaciones que consumirán este repositorio.
|
|
|
|
---
|
|
|
|
## Añadir manualmente una imagen al repositorio
|
|
|
|
En algunos casos, puede ser necesario importar manualmente una imagen monolítica ya existente en el sistema de archivos del servidor ogRepository. Este proceso es útil cuando una imagen `.img` ha sido generada previamente o transferida desde otro servidor, y no ha sido registrada aún en la base de datos del componente.
|
|
Para añadir una imagen manualmente, sigue estos pasos:
|
|
|
|
### 1. Renombrar la imagen
|
|
|
|
El archivo `.img` debe tener un nombre válido, sin espacios ni caracteres especiales, y sin la extensión al ser registrado en la interfaz. Por ejemplo, si la imagen representa un sistema Ubuntu BIOS, se puede renombrar de la siguiente manera:
|
|
|
|
```bash
|
|
mv imagen.img /opt/opengnsys/ogrepository/images/ubuntu-imagen-bios-documentation.img
|
|
```
|
|
|
|
> **Importante:**
|
|
> Asegúrate de que el nombre no contenga la extensión `.img` al registrarlo en la interfaz (solo el nombre base será introducido).
|
|
|
|
### 2. Mover la imagen al directorio de imágenes
|
|
|
|
La imagen debe ubicarse en el directorio gestionado por ogRepository:
|
|
|
|
Ejemplo:
|
|
|
|
```bash
|
|
mv ubuntu-imagen-bios-documentation.img /opt/opengnsys/ogrepository/images/
|
|
```
|
|
|
|
### 3. Ajustar los permisos
|
|
|
|
Es necesario que el archivo `.img` tenga como propietario el usuario `opengnsys` para que el backend pueda manipularlo correctamente:
|
|
|
|
```bash
|
|
chown opengnsys:opengnsys /opt/opengnsys/ogrepository/images/ubuntu-imagen-bios-documentation.img
|
|
chmod 744 /opt/opengnsys/ogrepository/images/ubuntu-imagen-bios-documentation.img
|
|
```
|
|
|
|
### 4. Importar la imagen desde la interfaz web
|
|
|
|
Una vez el archivo esté correctamente ubicado y con los permisos apropiados, se debe registrar en el sistema desde la interfaz web:
|
|
|
|
- Accede al apartado **Repositorio** de la interfaz de OpenGnsys.
|
|
- Haz clic en el botón **Importar imagen**.
|
|
- Se abrirá una ventana emergente solicitando el nombre de la imagen.
|
|
- Introduce el nombre sin la extensión:
|
|
|
|
```
|
|
ubuntu-imagen-bios-documentation
|
|
```
|
|
|
|
- Haz clic en **Continuar**.
|
|

|
|
---
|
|
|
|
## Acciones disponibles sobre una imagen
|
|
|
|
Desde la interfaz de ogRepository, es posible gestionar las imágenes monolíticas mediante un menú contextual que aparece junto al icono de opciones (⋮). Este menú permite ejecutar distintas acciones sobre una imagen ya registrada en el repositorio.
|
|
|
|

|
|
|
|
A continuación se describen todas las acciones disponibles:
|
|
|
|
### Obtener ficheros auxiliares
|
|
|
|
Esta opción genera los archivos auxiliares necesarios para que la imagen pueda ser desplegada correctamente en los clientes. Los archivos generados incluyen:
|
|
|
|
- `.torrent`: archivo para transmisiones P2P.
|
|
- `.sum`: hash de verificación de integridad (SHA256).
|
|
- `.info.checked`: metadatos de validación (tamaño, hash, tipo de sistema de archivos, etc.).
|
|
- `.size`: tamaño en bloques de la imagen, usado en el cálculo de progreso de restauración.
|
|
- `.meta`: archivo opcional con metainformación adicional.
|
|
|
|
**Nota:** Esta acción debe ejecutarse siempre tras importar manualmente una imagen al repositorio.
|
|
|
|
### Eliminar permanentemente
|
|
|
|
Elimina completamente la imagen del repositorio, tanto en la base de datos como en el sistema de archivos del servidor. Esta acción es irreversible.
|
|
|
|
**Nota:** Si la imagen fue eliminada previamente, pero aún está en papelera, esta opción la elimina definitivamente.
|
|
|
|
### Recuperar imagen de la papelera
|
|
|
|
Permite restaurar una imagen previamente eliminada, que ha sido enviada a la papelera lógica del sistema. La imagen volverá a estar disponible para uso inmediato.
|
|
|
|
**Nota:** Esta opción solo está activa si la imagen se encuentra en estado "eliminado".
|
|
|
|
### Transferir imagen
|
|
|
|
Permite transferir la imagen desde el servidor actual a otro servidor ogRepository de la red. Se debe especificar la IP, puerto SSH y usuario del servidor destino. La transferencia se realiza mediante SCP y requiere que el usuario tenga permisos de escritura en el directorio de imágenes del servidor destino.
|
|
|
|

|
|
|
|
**Nota:** Esta función es útil para clonar imágenes entre servidores sin necesidad de exportarlas manualmente.
|
|
|
|
### Transferir imagen globalmente
|
|
|
|
Similar a la opción anterior, pero la imagen se marca como "global" una vez completada la transferencia. Las imágenes globales están disponibles para ser vistas y utilizadas por todos los servidores de la red, según la configuración distribuida de OpenGnsys.
|
|
|
|
**Nota:** Requiere permisos administrativos y configuración previa de los nodos de red.
|
|
|
|
### Realizar backup
|
|
|
|
Genera una copia de seguridad de la imagen actual. El destino del backup puede ser configurado, ya sea en otro disco local o en un servidor remoto (NFS, SSH, etc.).
|
|
|
|
La copia puede incluir solo el archivo `.img` o todos los archivos asociados a la imagen.
|
|
|
|
### Checkear estado imagen
|
|
|
|
Verifica la integridad de la imagen comprobando que:
|
|
|
|
- El archivo `.img` existe y es accesible.
|
|
- El archivo `.sum` coincide con el hash actual del `.img`.
|
|
- Los archivos auxiliares están presentes y no están corruptos.
|
|
|
|
Esta opción es útil para diagnosticar errores antes de realizar una restauración.
|
|
|
|
|
|
### Renombrar imagen
|
|
|
|
Permite modificar el nombre lógico de la imagen dentro del sistema, actualizando su referencia en la base de datos.
|
|
|
|
**Nota:** Esta acción no renombra el archivo físico en el sistema de archivos. Solo afecta al nombre mostrado y registrado en la base de datos.
|