ogDocumentation/i18n-docu/docs/es/administration/ogrepository.md

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**.
![oggui-ogrepository-main.png](../assets/images/screenshots/oggui-ogrepository-main.png)
3. Pulsa **Añadir repositorio**.
![oggui-ogrepository-repository-options.png](../assets/images/screenshots/oggui-ogrepository-repository-options.png)
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.
![oggui-ogrepository-repository-info.png](../assets/images/screenshots/oggui-ogrepository-repository-info.png)
> **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**.
![oggui-ogrepository-asign-repository-client.png](../assets/images/screenshots/oggui-ogrepository-asign-repository-client.png)
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**.
![Añadir imagen](oggui-ogrepository-repository-add-image.png)
---
## 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.
![Opciones de imagen](oggui-ogrepository-repository-options.png)
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.
![Transferir imagen](oggui-ogrepository-repository-transferir-image.png)
**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.