diff --git a/docs/ogboot-ogcore-communication-design.md b/docs/ogboot-ogcore-communication-design.md index 5988384..7da2fa3 100644 --- a/docs/ogboot-ogcore-communication-design.md +++ b/docs/ogboot-ogcore-communication-design.md @@ -1,9 +1,109 @@ -## 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 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. + +--- + + ### Endpoints del Componente `ogboot`