Compare commits
4 Commits
main
...
ogboot-api
Author | SHA1 | Date |
---|---|---|
|
b03e60a7ea | |
|
2636f0fe4d | |
|
6daff2d32d | |
|
a0f5b50179 |
|
@ -1,9 +1,449 @@
|
|||
## Diseño de la Lógica y Comunicación entre los Endpoints del Componente `ogboot` y el Servidor `ogCore`
|
||||
# Documentación de Ogboot
|
||||
|
||||
### Introducción
|
||||
|
||||
## 1. Descripción General del Componente
|
||||
- 1.1 Introducción
|
||||
- 1.2 Funcionalidades
|
||||
- 1.2.1 Gestión de Imágenes de Arranque (ogLive)
|
||||
- 1.2.2 Monitoreo y Configuración
|
||||
- 1.2.3 Interfaz de Programación de Aplicaciones (API)
|
||||
- 1.3 Arquitectura General
|
||||
- 1.3.1 Componentes Principales
|
||||
- 1.3.2 Estructura del Proyecto
|
||||
- 1.3.3 Interacción entre Componentes
|
||||
- 1.3.4 Seguridad y Permisos
|
||||
|
||||
## 2. Instalación
|
||||
- 2.1 Requisitos Previos
|
||||
- 2.1.1 Software Necesario
|
||||
- 2.1.2 Hardware Requerido
|
||||
- 2.1.3 Permisos y Configuraciones Previas
|
||||
- 2.2 Instrucciones de Instalación
|
||||
- 2.2.1 Descarga del Software
|
||||
- 2.2.2 Instalación Paso a Paso
|
||||
- 2.2.3 Configuración Inicial
|
||||
|
||||
## 3. Endpoints y API
|
||||
- 3.1 Listado de Endpoints
|
||||
- 3.1.1 Métodos y Rutas
|
||||
- 3.1.2 Descripciones de los Endpoints
|
||||
- 3.2 Ejemplos de Solicitudes y Respuestas
|
||||
- 3.3 Manejo de Errores Comunes
|
||||
- 3.4 Middleware y Autenticación
|
||||
|
||||
## 4. Configuración del Servidor
|
||||
- 4.1 Configuración de Nginx
|
||||
- 4.2 Configuración de PHP-FPM
|
||||
- 4.3 Creación y Levantamiento del Demonio ogboot
|
||||
- 4.4 Configuración de Usuarios y Permisos
|
||||
|
||||
## 5. Funciones del CLI (oglivecli)
|
||||
- 5.1 Descripción de las Funciones
|
||||
- 5.2 Ejemplos de Uso
|
||||
- 5.3 Interacción con el Sistema y el Demonio
|
||||
|
||||
## 6. Integración con Otros Sistemas
|
||||
- 6.1 Integración con TFTP
|
||||
- 6.2 Configuración de PXE
|
||||
- 6.3 Otros Servicios y Configuraciones
|
||||
|
||||
## 7. Seguridad
|
||||
- 7.1 Consideraciones de Seguridad
|
||||
- 7.2 Medidas para Mitigar Riesgos
|
||||
- 7.3 Configuración Segura
|
||||
|
||||
## 8. Mantenimiento y Monitoreo
|
||||
- 8.1 Monitoreo del Estado del Demonio
|
||||
- 8.2 Procedimientos de Mantenimiento Recomendados
|
||||
- 8.3 Solución de Problemas Comunes
|
||||
|
||||
## 9. Actualización y Desinstalación
|
||||
- 9.1 Procedimientos de Actualización
|
||||
- 9.2 Pasos para Desinstalar ogboot
|
||||
|
||||
## 10. Anexos
|
||||
- 10.1 Ejemplos de Configuración de Archivos Relevantes
|
||||
- 10.2 Listado de Comandos Útiles
|
||||
- 10.3 Referencias a Documentación Externa
|
||||
|
||||
## 11. Ejemplos Prácticos
|
||||
- 11.1 Casos de Uso Comunes
|
||||
- 11.2 Scripts de Automatización
|
||||
- 11.3 Integraciones Prácticas
|
||||
|
||||
|
||||
|
||||
|
||||
## 1. Descripción General del Componente
|
||||
|
||||
### 1.1 Introducción
|
||||
|
||||
El componente `ogboot` se encarga de la gestión y configuración de archivos de arranque (iPXE) y plantillas en un entorno de despliegue de imágenes. El servidor `ogCore` es el núcleo que interactúa con `ogboot` para realizar operaciones de administración y configuración. Este documento describe la lógica y la comunicación entre los endpoints del componente `ogboot` y el servidor `ogCore`.
|
||||
|
||||
|
||||
### 1.2 Funcionalidades
|
||||
|
||||
#### 1.2.1 ogLive
|
||||
|
||||
El **ogLive** es un sistema operativo diseñado para iniciarse en clientes PCs y llevar a cabo diversas operaciones indicadas por OpenGnsys, como la creación de particiones y la restauración de sistemas operativos. Este sistema operativo se carga y ejecuta completamente en la RAM y se distribuye a través de la red, lo que le permite realizar una regeneración completa de todos los discos de almacenamiento en un equipo.
|
||||
|
||||
Desde el punto de vista de su diseño, el ogLive se divide en dos componentes, cada uno con una función específica en el proceso de arranque:
|
||||
|
||||
1. **Primera Fase: Kernel e Initrd**
|
||||
- Esta fase incluye un Kernel y un Initrd, elementos tradicionales de una distribución de Ubuntu, pero con la adición de un proceso alternativo llamado `oginit`.
|
||||
- El `oginit` permite cambiar el contexto (`pivot_root`) del Initrd a la partición raíz (rootfs) de manera rápida y flexible según las necesidades de OpenGnsys.
|
||||
- El `oginit` permite utilizar un rootfs ubicado en la red a través de sistemas de archivos distribuidos como NFS, Samba o SSHFS, y crea enlaces en el minisistema del Initrd con los archivos del rootfs, facilitando así el uso de programas y utilidades que no pueden ser instalados en el Initrd.
|
||||
- Este enfoque minimiza los problemas de red, ya que el sistema principal (Initrd) siempre reside en la RAM y solo accede al rootfs cuando se necesita una utilidad no presente en el Initrd.
|
||||
|
||||
2. **Segunda Fase: Rootfs en la Red**
|
||||
- El rootfs, que es compartido por todos los clientes, se fusiona con el Initrd, lo que permite independizar los procesos de cada equipo.
|
||||
- Este diseño admite varias configuraciones de arranque, donde los elementos de las dos fases pueden estar en diferentes ubicaciones.
|
||||
|
||||
Para aumentar la velocidad de descarga, se utiliza HTTP configurado por Nginx para la carga de la imagen de inicialización y el kernel. Esto reduce significativamente los retardos en la primera fase, donde se cargan aproximadamente 40 MB del Kernel y el Initrd en la memoria RAM. Una vez cargados, la conexión con el rootfs a través de Samba se establece de forma inmediata.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### 1.3 Arquitectura General del Sistema
|
||||
|
||||
#### Flujo de Comunicación entre el Cliente y el Servidor OgDHCP
|
||||
|
||||
El proceso de arranque en red utilizando ogboot sigue un flujo bien definido que comienza con la comunicación entre el cliente y el servidor DHCP, denominado **OgDHCP** en este contexto.
|
||||
|
||||
1. **Solicitud de Configuración de Red por Parte del Cliente:**
|
||||
- Cuando un cliente se inicia, envía una solicitud al servidor OgDHCP para obtener los parámetros necesarios para arrancar en red. Este es el primer paso en el proceso de arranque PXE (Preboot Execution Environment).
|
||||
|
||||
2. **Asignación de IP y Parámetros de Arranque por OgDHCP:**
|
||||
- El servidor OgDHCP responde a la solicitud del cliente asignándole una dirección IP. Además de la dirección IP, OgDHCP proporciona dos parámetros cruciales:
|
||||
- **Next-server:** Esta es la dirección IP del servidor ogBoot, que se encargará de proporcionar los archivos necesarios para que el cliente pueda arrancar.
|
||||
- **Boot-file-name:** Este parámetro especifica el archivo que el cliente debe cargar para continuar con el proceso de arranque. El nombre del archivo depende del tipo de firmware del cliente:
|
||||
- **ipxe-efi:** Se utiliza para sistemas con firmware EFI.
|
||||
- **undionly.pxe:** Se utiliza para sistemas con BIOS tradicional.
|
||||
|
||||
3. **Comunicación del Cliente con el Servidor ogBoot:**
|
||||
- Con la dirección IP del servidor ogBoot (especificada en el `next-server`) y el nombre del archivo de arranque (`boot-file-name`), el cliente se comunica directamente con el servidor ogBoot.
|
||||
- **ogBoot** tiene un directorio **tftpboot** donde están alojados los archivos de arranque, como **ipxe-efi** y **undionly.pxe**.
|
||||
|
||||
4. **Ejecución de Scripts Embebidos en los Ficheros de Arranque:**
|
||||
- Los archivos de arranque descargados por el cliente (como `ipxe-efi` o `undionly.pxe`) contienen scripts embebidos llamados `dhcp_boot.ipxe`.
|
||||
- Además de configurar la red del cliente, `dhcp_boot.ipxe` incluye instrucciones específicas que indican al cliente que ejecute un script de arranque basado en su dirección MAC.
|
||||
- Estos scripts de arranque suelen tener nombres como `01-XX:XX:XX:XX:XX:XX`, donde `XX:XX:XX:XX:XX:XX` representa la dirección MAC del cliente. Por ejemplo, un nombre de archivo podría ser `01-00:50:56:34:48:11`.
|
||||
|
||||
5. **Carga del Kernel y la Imagen de Inicialización:**
|
||||
- Los scripts de arranque específicos para cada cliente se encargan de la carga del kernel y la imagen de inicialización. Además, estos scripts incluyen configuraciones personalizadas para cada cliente, tales como:
|
||||
- El nombre de la máquina.
|
||||
- La dirección IP asignada.
|
||||
- La versión de **ogLive** que el cliente utilizará para la carga.
|
||||
- Otras configuraciones específicas del entorno y las necesidades del cliente.
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
---
|
||||
|
||||
### Requisitos Mínimos para la Instalación de ogBoot
|
||||
|
||||
1. **Requisitos de hardware:**
|
||||
- **Almacenamiento mínimo**: Se requieren al menos **600 MB** de espacio en disco, ya que se descargará **ogLive 5.13** como parte de la instalación.
|
||||
- **Memoria RAM**: Dependiendo del número de clientes que se vayan a gestionar, pero se recomienda al menos 2 GB de RAM para un servidor que gestione despliegues pequeños.
|
||||
|
||||
2. **Sistema operativo compatible:**
|
||||
- **Distribuciones de Linux recomendadas**:
|
||||
- Ubuntu 18.04 LTS o superior
|
||||
- CentOS 7 o superior
|
||||
- **Nota**: Es posible que otras distribuciones basadas en Linux también sean compatibles, pero se recomienda realizar pruebas en entornos similares a los descritos.
|
||||
|
||||
3. **Python:**
|
||||
- Se requiere **Python 3.7 o superior**.
|
||||
|
||||
4. **Dependencias de software**:
|
||||
- Las dependencias de software se instalan automáticamente durante el proceso de instalación. Estas incluyen:
|
||||
- **tftpd-hpa**
|
||||
- **nginx**
|
||||
- **php-fpm**
|
||||
- **composer**
|
||||
- **Symfony**
|
||||
- **NFS** y **Samba** para la configuración del sistema de archivos y la compartición de archivos.
|
||||
|
||||
5. **Permisos y usuarios:**
|
||||
- La instalación requiere que se ejecute con **privilegios de root**.
|
||||
- Durante la instalación, se crearán usuarios específicos, como:
|
||||
- **ogboot**: Para ejecutar servicios y gestionar los componentes de ogBoot.
|
||||
- **OPENGNSYS_CLIENT_USER**: Usuario creado para gestionar la comunicación con OpenGnsys.
|
||||
|
||||
6. **Red y conectividad:**
|
||||
- Se recomienda que el servidor tenga acceso a Internet para descargar dependencias y actualizaciones.
|
||||
- El servidor necesita estar en una red con un **servidor DHCP activo** para que los clientes puedan obtener sus configuraciones de red durante el arranque.
|
||||
|
||||
7. **Configuración de la red**:
|
||||
- Es necesario un interfaz de red para la gestión del tráfico de los clientes, configurado automáticamente durante la instalación.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
### Directorios Clave de ogBoot Instalado:
|
||||
|
||||
1. **client**:
|
||||
- Este directorio contiene el cliente que será **servido por Samba** para su uso en los despliegues. Los archivos en este directorio son accesibles para los clientes a través de la red, facilitando la instalación y el arranque remoto.
|
||||
|
||||
2. **bin**:
|
||||
- Contiene los scripts de gestión de ogBoot, incluyendo:
|
||||
- **oglivecli**: Utilizado para la **gestión de ogLive**, permitiendo la instalación, borrado o consulta de imágenes de arranque.
|
||||
- **setsmbpass**: Script encargado de gestionar las contraseñas de Samba y configurar el acceso seguro a los clientes.
|
||||
|
||||
3. **tftpboot**:
|
||||
- En este directorio se alojan los **archivos de arranque** como `ipxe-efi` y `undionly.pxe`, así como los **ogLive montados** que serán utilizados por estos archivos de arranque para lanzar los sistemas operativos en los clientes.
|
||||
|
||||
4. **Resto de directorios**:
|
||||
- **src**, **config**, **lib**, **etc**, **doc**, **composer.json**, y **installer** contienen los archivos y configuraciones de **Symfony**, que es el framework utilizado por ogBoot para gestionar su estructura interna y flujos de trabajo.
|
||||
|
||||
|
||||
#### Comandos y Funciones:
|
||||
|
||||
1. **help**
|
||||
- **Descripción**: Muestra la ayuda del script, incluyendo una lista completa de los comandos disponibles y sus descripciones.
|
||||
- **Uso**: `oglivecli help`
|
||||
|
||||
2. **version**
|
||||
- **Descripción**: Muestra la versión actual del script `oglivecli`.
|
||||
- **Uso**: `oglivecli version`
|
||||
|
||||
3. **config [Parámetro]**
|
||||
- **Descripción**: Muestra los parámetros de configuración específicos que utiliza ogBoot. Puede recibir un parámetro para mostrar un valor específico.
|
||||
- **Uso**: `oglivecli config [Parámetro]`
|
||||
|
||||
4. **disk_usage**
|
||||
- **Descripción**: Muestra información sobre el uso de disco en el servidor, lo que permite verificar cuánta capacidad de almacenamiento se está utilizando.
|
||||
- **Uso**: `oglivecli disk_usage`
|
||||
|
||||
5. **list_installed_oglives**
|
||||
- **Descripción**: Lista todos los clientes ogLive instalados en el servidor, mostrando las imágenes disponibles para su despliegue.
|
||||
- **Uso**: `oglivecli list_installed_oglives`
|
||||
|
||||
6. **check_services_status**
|
||||
- **Descripción**: Verifica el estado de los servicios críticos necesarios para el funcionamiento de ogBoot, como `oglive_daemon`, `tftpd-hpa`, y `nginx`.
|
||||
- **Uso**: `oglivecli check_services_status`
|
||||
|
||||
7. **download**
|
||||
- **Descripción**: Muestra un menú interactivo para descargar una imagen ISO de ogLive desde el sitio web de OpenGnsys.
|
||||
- **Uso**: `oglivecli download`
|
||||
|
||||
8. **download Iso**
|
||||
- **Descripción**: Permite descargar una imagen ISO específica de ogLive desde el sitio web de OpenGnsys.
|
||||
- **Uso**: `oglivecli download [Iso]`
|
||||
|
||||
9. **install Iso**
|
||||
- **Descripción**: Instala un nuevo cliente ogLive desde una ISO previamente descargada.
|
||||
- **Uso**: `oglivecli install [Iso]`
|
||||
|
||||
10. **uninstall uuid**
|
||||
- **Descripción**: Desinstala un cliente ogLive utilizando su UUID. Este comando elimina la imagen instalada del cliente.
|
||||
- **Uso**: `oglivecli uninstall [uuid]`
|
||||
|
||||
11. **get_default**
|
||||
- **Descripción**: Obtiene el valor del índice correspondiente al cliente ogLive predeterminado actualmente en uso.
|
||||
- **Uso**: `oglivecli get_default`
|
||||
|
||||
12. **set_default uuid**
|
||||
- **Descripción**: Establece un cliente ogLive como predeterminado utilizando su UUID.
|
||||
- **Uso**: `oglivecli set_default [uuid]`
|
||||
|
||||
13. **get_info uuid**
|
||||
- **Descripción**: Obtiene información en formato JSON sobre un cliente ogLive instalado, identificado por su UUID.
|
||||
- **Uso**: `oglivecli get_info [uuid]`
|
||||
|
||||
|
||||
|
||||
|
||||
### 4. Configuración del Servidor
|
||||
|
||||
#### 4.1 Configuración de Nginx
|
||||
|
||||
El servidor Nginx se configura para manejar las solicitudes de ogBoot y servir archivos tanto del proyecto Symfony como del directorio TFTP. A continuación se detalla la configuración relevante para ogBoot:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name 172.17.8.37 localhost; # IP del servidor
|
||||
|
||||
# Raíz del documento para el proyecto Symfony
|
||||
root /opt/ogboot/public;
|
||||
|
||||
# Bloque para manejar las solicitudes a /ogboot
|
||||
location /ogboot {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
# Aumentar el tiempo de espera por el install oglive
|
||||
proxy_read_timeout 600;
|
||||
proxy_connect_timeout 600;
|
||||
proxy_send_timeout 600;
|
||||
send_timeout 600;
|
||||
}
|
||||
|
||||
# Bloque para manejar las solicitudes a index.php
|
||||
location ~ ^/index.php(/|$) {
|
||||
include fastcgi_params;
|
||||
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Asegúrate de que esto sea correcto
|
||||
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||
fastcgi_param DOCUMENT_ROOT $document_root;
|
||||
internal;
|
||||
}
|
||||
|
||||
# Bloque para devolver 404 en cualquier solicitud a archivos PHP que no sean index.php
|
||||
location ~ \.php$ {
|
||||
return 404;
|
||||
}
|
||||
|
||||
# Logs de error y acceso para el proyecto Symfony
|
||||
error_log /var/log/nginx/ogboot_error.log;
|
||||
access_log /var/log/nginx/ogboot_access.log;
|
||||
|
||||
# Manejo de la documentación de la API
|
||||
location /api/doc {
|
||||
try_files $uri /index.php?$query_string;
|
||||
}
|
||||
|
||||
# Ruta base para servir archivos de TFTP
|
||||
location /tftpboot {
|
||||
alias /opt/ogboot/tftpboot;
|
||||
autoindex on; # Permitir listado de directorios
|
||||
try_files $uri $uri/ =404; # Intentar servir archivos, si no se encuentra devolver 404
|
||||
|
||||
# Seguridad: Bloquear el acceso a archivos PHP en el directorio tftpboot
|
||||
location ~ \.php$ {
|
||||
return 404;
|
||||
}
|
||||
|
||||
# Logs para el directorio tftpboot
|
||||
error_log /var/log/nginx/tftpboot_error.log;
|
||||
access_log /var/log/nginx/tftpboot_access.log;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
##### Puntos importantes:
|
||||
- **Root del documento**: Se especifica que el contenido principal de ogBoot se sirve desde `/opt/ogboot/public`, que es la raíz del proyecto Symfony.
|
||||
- **Tiempos de espera aumentados**: Se incrementa el tiempo de espera (`timeout`) en la sección de `/ogboot` debido a la duración de algunas operaciones críticas, como la instalación de ogLive.
|
||||
- **Archivos TFTP**: El contenido del directorio `/tftpboot` es accesible mediante la ruta `/tftpboot`, y está configurado para permitir el listado de archivos y bloquear cualquier intento de ejecutar archivos PHP desde este directorio.
|
||||
- **Logs de Nginx**: Los logs de error y acceso se guardan en archivos dedicados para facilitar la depuración de problemas.
|
||||
|
||||
#### 4.2 Configuración de PHP-FPM
|
||||
|
||||
La configuración de PHP-FPM es crucial para que ogBoot maneje adecuadamente las solicitudes a través de Nginx. En este caso, PHP-FPM está configurado para ejecutarse con el usuario `www-data` y el grupo `ogboot`:
|
||||
|
||||
- **fastcgi_pass**: El parámetro `fastcgi_pass` está configurado para utilizar el socket Unix en `/run/php/php8.3-fpm.sock`, asegurando que las solicitudes PHP se manejen correctamente.
|
||||
- **Usuarios y permisos**:
|
||||
- **Usuario**: `www-data`
|
||||
- **Grupo**: `ogboot`
|
||||
|
||||
Esto asegura que los procesos PHP tengan los permisos adecuados para leer y escribir en los directorios relevantes, como los de Symfony y ogLive.
|
||||
|
||||
#### 4.3 Creación y Levantamiento del Demonio ogBoot
|
||||
|
||||
El demonio **ogboot** es esencial para el funcionamiento del sistema, y debe ser levantado tras la configuración del servidor. La creación del demonio implica los siguientes pasos:
|
||||
|
||||
1. **Creación del usuario `ogboot`**:
|
||||
- Se crea un usuario específico para ejecutar los servicios relacionados con ogBoot, con los permisos adecuados para manejar el contenido del servidor.
|
||||
|
||||
2. **Levantamiento del servicio**:
|
||||
- El demonio **ogboot** se levanta automáticamente tras la configuración, ejecutando las tareas esenciales para la gestión de imágenes y el arranque de clientes.
|
||||
|
||||
#### 4.4 Configuración de Samba
|
||||
|
||||
La configuración de Samba permite compartir los directorios necesarios con los clientes que se conectan a ogBoot. A continuación se detallan las configuraciones relevantes:
|
||||
|
||||
```ini
|
||||
[tftpboot]
|
||||
comment = OpenGnsys init files
|
||||
browseable = no
|
||||
writeable = no
|
||||
path = /opt/opengnsys/tftpboot
|
||||
guest ok = no
|
||||
|
||||
[ogclient]
|
||||
comment = OpenGnsys Client
|
||||
browseable = no
|
||||
writeable = no
|
||||
locking = no
|
||||
path = /opt/opengnsys/client
|
||||
guest ok = no
|
||||
```
|
||||
|
||||
##### Puntos importantes:
|
||||
- **Directorio `tftpboot`**:
|
||||
- **Uso**: Se comparte el directorio `/opt/opengnsys/tftpboot` para servir los archivos de arranque a los clientes.
|
||||
- **Permisos**: No es navegable (`browseable = no`), y no se permite escribir en él (`writeable = no`). Los clientes solo pueden acceder a los archivos necesarios.
|
||||
|
||||
- **Directorio `ogclient`**:
|
||||
- **Uso**: Comparte el directorio `/opt/opengnsys/client`, que contiene el cliente OpenGnsys.
|
||||
- **Permisos**: Al igual que en `tftpboot`, este directorio no es navegable ni escribible desde los clientes. Además, el bloqueo de archivos está deshabilitado (`locking = no`).
|
||||
|
||||
|
||||
|
||||
### Comandos del Script `oglivecli`
|
||||
|
||||
El script `oglivecli` es una herramienta de línea de comandos diseñada para gestionar las imágenes de ogLive, permitiendo realizar diversas operaciones relacionadas con la instalación, configuración y administración de estos clientes de arranque en el entorno ogBoot.
|
||||
|
||||
### 6. Integración con Otros Sistemas
|
||||
|
||||
#### 6.1 Integración con TFTP
|
||||
|
||||
En **ogBoot**, el servicio TFTP (Trivial File Transfer Protocol) es esencial para servir los archivos necesarios para el arranque de los clientes. El directorio **tftpboot** aloja los archivos de arranque y las imágenes de ogLive que serán utilizados en el proceso de arranque PXE.
|
||||
|
||||
En el directorio `/opt/ogboot/tftpboot`, se encuentran los siguientes archivos y directorios clave:
|
||||
- **ipxe.efi**: El archivo de arranque para sistemas EFI.
|
||||
- **undionly.kpxe**: El archivo de arranque para sistemas BIOS.
|
||||
- **ipxe_scripts**: Scripts IPXE personalizados que gestionan el arranque de los clientes.
|
||||
- **ogLive**: Directorio que contiene las imágenes del sistema operativo ogLive que serán utilizadas por los clientes.
|
||||
- **ogclient**: El cliente OpenGnsys, que se carga a través de Samba.
|
||||
|
||||
El TFTP se configura para servir estos archivos a los clientes, permitiendo que accedan a los recursos necesarios para iniciar el proceso de arranque.
|
||||
|
||||
#### 6.2 Configuración de PXE
|
||||
|
||||
El **PXE (Preboot Execution Environment)** es utilizado para inicializar los clientes a través de la red. En el caso de ogBoot, el proceso PXE está configurado para proporcionar archivos de arranque según el firmware de los clientes (EFI o BIOS) y luego ejecutar scripts de IPXE personalizados.
|
||||
|
||||
##### Estructura de los Scripts IPXE
|
||||
|
||||
En el directorio `/opt/ogboot/tftpboot/ipxe_scripts`, se encuentran varios archivos de configuración de IPXE, incluyendo archivos como `default.ipxe`, `dhcp_boot.ipxe`, y plantillas específicas de arranque como `01-D05099AA8C06`, que están basadas en la dirección MAC del cliente.
|
||||
|
||||
- **Archivos de arranque personalizados**: Los scripts IPXE como `01-D05099AA8C06` están vinculados a clientes específicos basados en su dirección MAC. Esto permite configurar un arranque personalizado para cada cliente.
|
||||
|
||||
##### Ejemplo de una plantilla IPXE (mi_plantilla.ipxe)
|
||||
|
||||
```ipxe
|
||||
#!ipxe
|
||||
set timeout 0
|
||||
set timeout-style hidden
|
||||
set ISODIR __OGLIVE__
|
||||
set default 0
|
||||
set kernelargs __INFOHOST__
|
||||
:try_iso
|
||||
kernel http://__SERVERIP__/tftpboot/${ISODIR}/ogvmlinuz ${kernelargs} || goto fallback
|
||||
initrd http://__SERVERIP__/tftpboot/${ISODIR}/oginitrd.img
|
||||
boot
|
||||
|
||||
:fallback
|
||||
set ISODIR ogLive
|
||||
kernel http://__SERVERIP__/tftpboot/${ISODIR}/ogvmlinuz ${kernelargs}
|
||||
initrd http://__SERVERIP__/tftpboot/${ISODIR}/oginitrd.img
|
||||
boot
|
||||
```
|
||||
|
||||
##### Parámetros Relevantes de la Plantilla:
|
||||
|
||||
- `__SERVERIP__`: Este parámetro se reemplaza con la dirección IP del servidor ogBoot, que sirve los archivos necesarios para el arranque.
|
||||
- `__INFOHOST__`: Se sustituye con los parámetros del kernel específicos de la máquina que está arrancando. Estos parámetros pueden incluir configuraciones específicas como el nombre de la máquina, la dirección IP, y otros detalles necesarios para el arranque.
|
||||
- `__OGLIVE__`: Se reemplaza con la versión de ogLive que será utilizada para arrancar la máquina cliente. Esto permite cargar diferentes versiones de ogLive según la configuración de cada cliente.
|
||||
|
||||
Este sistema de plantillas facilita la personalización del proceso de arranque para diferentes clientes, permitiendo que ogBoot adapte el arranque PXE según los requerimientos de cada máquina.
|
||||
|
||||
### Endpoints del Componente `ogboot`
|
||||
|
||||
|
||||
|
@ -319,6 +759,8 @@ Para los nuevos flujos de trabajo, asumimos que habrá al menos una nueva tabla
|
|||
SELECT * FROM oglives;
|
||||
```
|
||||
|
||||
**Realización 2**: También se puede llevar a cabo desde **`ogBoot`** haciendo una consulta al endpoint
|
||||
|
||||
**Endpoint**:
|
||||
- **`ogBoot`**: `/ogboot/v1/oglives`
|
||||
- **Método**: `GET`
|
||||
|
@ -346,11 +788,17 @@ SELECT * FROM oglives;
|
|||
**Realización**: Requiere comunicación con **`ogBoot`** para iniciar la instalación. Primero, se construye el JSON con los parámetros necesarios. La inserción en la base de datos `ogCore` solo se realiza después de que la instalación en `ogBoot` sea confirmada como exitosa.
|
||||
|
||||
- **Proceso de Instalación**:
|
||||
1. **Generación de JSON**: `ogCore` genera un JSON con los detalles del `ogLive`, incluyendo un UUID temporal.
|
||||
1. **Generación de JSON**: `ogCore` genera un JSON con los detalles del `ogLive`.
|
||||
2. **Solicitud de Instalación**:
|
||||
- **Endpoint**: `/ogboot/v1/oglives`
|
||||
- **Método**: `POST`
|
||||
- **Cuerpo de la Solicitud**:
|
||||
```json
|
||||
{
|
||||
"iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
|
||||
}
|
||||
```
|
||||
- **Respuesta**:
|
||||
```json
|
||||
{
|
||||
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
||||
|
@ -362,8 +810,7 @@ SELECT * FROM oglives;
|
|||
"iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
|
||||
}
|
||||
```
|
||||
3. **Validación de Instalación**: `ogBoot` intenta instalar el `ogLive` y devuelve un estado de éxito o fallo.
|
||||
4. **Actualización de Base de Datos**:
|
||||
3. **Actualización de Base de Datos**:
|
||||
- **Instalación Exitosa**: Si `ogBoot` confirma el éxito, `ogCore` inserta el nuevo `ogLive` en la base de datos:
|
||||
```sql
|
||||
INSERT INTO oglives (uuid, distribution, kernel, architecture, revision, directory, iso, is_default)
|
||||
|
|
Loading…
Reference in New Issue