Go to file
Luis Gerardo Romero Garcia 47bc0c0a9f refs #199 adds return parameters to pxe-templates 2024-04-22 12:50:26 +02:00
README.md refs #199 adds return parameters to pxe-templates 2024-04-22 12:50:26 +02:00

README.md

Ogboot

Ogboot es una implementación independiente que facilita la funcionalidad de arranque remoto (PXE) en entornos gestionados por Opengnsys. Este componente permite la carga remota de sistemas operativos y otros archivos esenciales durante el proceso de arranque de las estaciones de trabajo.

API de Ogboot

La API de Ogboot proporciona una interfaz para facilitar el proceso de inicialización remota de sistemas operativos en entornos administrados por OpenGnsys. Ogboot permite la gestión eficiente de los archivos de arranque tanto de particiones locales como de sistemas operativos remotos.

El presente documento detalla los endpoints del API con sus respectivos parámetros de entrada así como las acciones que llevan a cabo

Tabla de Contenido

  1. Obtener configuración de ogboot - GET /ogboot/v1/config
  2. Obtener datos de rendimiento - GET /ogboot/v1/status
  3. Mostrar información de todos los clientes ogLive instalados - GET /ogboot/v1/oglives
  4. Mostrar información de un cliente ogLive instalado - GET /ogboot/v1/oglives/{Index|Dir}
  5. Mostrar información del cliente ogLive predeterminado - GET /ogboot/v1/oglives/default
  6. Cambiar ogLive predeterminado - POST /ogboot/v1/oglives/default/{Index}
  7. Instalar nuevo cliente ogLive desde imagen descargada - POST /ogboot/v1/oglive/{Index/iso}
  8. Desinstalar cliente ogLive y eliminar imagen - DELETE /ogboot/v1/oglives/{Index/iso}
  9. Regenerar archivo de información de los ogLive - PUT /ogboot/v1/oglives
  10. Mostrar menú de descarga de imagen de ogLive - GET /ogboot/v1/images/download
  11. Obtener todos los archivos de arranque - GET /ogboot/v1/pxes
  12. Obtener archivo de arranque - GET /ogboot/v1/clients/pxes/{mac}
  13. Crear archivo de arranque - POST /ogboot/v1/pxes
  14. Eliminar archivo de arranque - DELETE /ogboot/v1/clients/pxes
  15. Obtener todas las plantillas - GET /ogboot/v1/pxe-templates
  16. Obtener contenido de la plantilla - GET /ogboot/v1/pxe-templates/{nombre}
  17. Crear plantilla - POST /ogboot/v1/pxe-templates
  18. Regenerar plantilla - PUT /ogboot/v1/pxe-templates

Obtener Configuración de ogboot

Devuelve la configuración actual del ogboot.

URL: /ogboot/v1/config Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/config

Respuestas:

  • Código 200 OK: La configuración del ogboot se obtuvo exitosamente.

    • Contenido: Configuración del ogboot en formato JSON.
      {
        "config-file": "/opt/opengnsys/etc/ogliveinfo.json",
        "download-url": "https://opengnsys.es/trac/downloads",
        "download-dir": "/opt/opengnsys/lib",
        "install-dir": "/opt/opengnsys/tftpboot",
        "default-name": "ogLive",
        "min-release": "r20190601"
      }
      
  • config-file: Ruta del archivo de configuración que usa oglivecli para guardar los oglives instalados.

  • download-url: URL base desde la cual se descargan las imágenes de oglive.

  • download-dir: Ruta del directorio en el cual se almacenan las imágenes de oglive descargadas

  • install-dir: La ruta del directorio donde se instalan las imágenes de oglive

  • default-name: Nombre predeterminado utilizado para los clientes ogLive.

  • min-release: La versión mínima recomendada para la instalación de imágenes oglives.

Estas definiciones proporcionan una comprensión clara de cada uno de los parámetros de contenido dentro de la configuración del ogboot.

  • Código 400 Bad Request: La solicitud es incorrecta. La configuración del ogboot no se ha obtenido correctamente.

Obtener estado de ogboot

Devuelve la consistencia, errores de incompatibilidad y de configuración

URL: /ogboot/v1/status Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/status

Respuestas:

  • Código 200 OK: El status de ogboot se obtuvo exitosamente.
    • Contenido:
        Some installed ogLive aren't fully compatible: , , ogLive-3.19.0-i386-r4795
        Problems detected: 
      
  • Código 400 Bad Request: La solicitud es incorrecta. La status de ogboot no se ha obtenido correctamente.

Mostrar Información de Todos los Clientes ogLive Instalados

Muestra información en formato JSON sobre todos los clientes ogLive instalados.

URL: /ogboot/v1/clients/oglives Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/

[
  {
    "distribution": "focal",
    "kernel": "5.11.0-22-generic",
    "architecture": "amd64",
    "revision": "r20210413",
    "directory": "ogLive-5.11.0-r20210413",
    "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
  },
  {
    "distribution": "focal",
    "kernel": "5.13.0-27-beta",
    "architecture": "amd64",
    "revision": "r20210706",
    "directory": "ogLive-5.13.0-r20210706",
    "iso": "ogLive-focal-5.13.0-27-beta-amd64-r20210706.5b4bf5f.iso"
  }
]

  • distribution: Distribución del sistema operativo de la imagen ogLive

  • kernel: Versión del kernel del sistema operativo utilizado por la imagen ogLive

  • architecture: Arquitectura del hardware de la imagen ogLive

  • revision: Versión de la imagen ogLive

  • directory: Directorio donde se encuentra instalado el cliente ogLive en el sistema.

  • iso: Nombre del archivo ISO utilizado para instalar el cliente ogLive.

Respuestas:

  • Código 200 OK: La información sobre todos los clientes ogLive instalados se obtuvo exitosamente.
    • Contenido: Información sobre todos los clientes ogLive instalados en formato JSON.

Mostrar Información de un Cliente ogLive Instalado

Muestra información en formato JSON sobre un cliente ogLive instalado específico.

URL: /ogboot/v1/clients/oglives/{Index|Dir} Método HTTP: GET

Parámetros de la URL:

  • {Index|Dir}: El índice o directorio del cliente ogLive instalado.

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/1

{
  "distribution": "focal",
  "kernel": "5.11.0-22-generic",
  "architecture": "amd64",
  "revision": "r20210413",
  "directory": "ogLive-5.11.0-r20210413",
  "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
}

Respuestas:

  • Código 200 OK: La información sobre el cliente ogLive instalado se obtuvo exitosamente.
    • Contenido: Información sobre el cliente ogLive instalado en formato JSON.
  • Código 404 Not Found: No se encontró ningún cliente ogLive instalado con el índice o directorio proporcionado.

Mostrar Información del Cliente ogLive Predeterminado

Muestra información en formato JSON sobre el cliente ogLive predeterminado.

URL: /ogboot/v1/clients/oglives/default Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/default

{
  "distribution": "focal",
  "kernel": "5.11.0-22-generic",
  "architecture": "amd64",
  "revision": "r20210413",
  "directory": "ogLive-5.11.0-r20210413",
  "iso": "ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso"
}

Respuestas:

  • Código 200 OK: La información sobre el cliente ogLive predeterminado se obtuvo exitosamente.
    • Contenido: Información sobre el cliente ogLive predeterminado en formato JSON.

Cambiar ogLive Predeterminado

Establece un nuevo cliente ogLive como predeterminado utilizando su índice.

URL:
Método HTTP: POST

Parámetros de la URL:

  • {Index}: El índice del cliente ogLive que se establecerá como predeterminado.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/oglives/default/1

Respuestas:

  • Código 200 OK: El cliente ogLive se estableció como predeterminado exitosamente.
  • Código 404 Not Found: No se encontró ningún cliente ogLive con el índice proporcionado.

Descargar e Instalar Nuevo Cliente ogLive desde Imagen Descargada

Descarga y luego instala un nuevo cliente ogLive utilizando la imagen descargada, especificada por su nombre de archivo ISO en el parámetro de entrada.

URL: /ogboot/v1/oglive Método HTTP: POST

Parámetros de Entrada:

  • `ISO: Nombre de la ISO que se desea descargar e instalar

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -d "ISO=ogLive-focal-5.13.0-27-beta-amd64-r20210706.5b4bf5f.iso" http://example.com/ogboot/v1/oglive

Respuestas:

  • Código 200 OK: La descarga e instalación del nuevo cliente ogLive desde la imagen descargada fue exitosa.
  • Código 404 Not Found: No se encontró ninguna imagen ogLive con el índice o nombre de archivo ISO proporcionado.

Desinstalar Cliente ogLive

Desinstala un cliente ogLive específico y elimina su imagen asociada.

URL: /ogboot/v1/oglives/{Index/iso} Método HTTP: DELETE

Parámetros de la URL:

  • {Index/iso}: El índice o nombre de archivo ISO del cliente ogLive que se desinstalará y eliminará.

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/oglives/1

Respuestas:

  • Código 200 OK: El cliente ogLive se desinstaló y su imagen asociada se eliminó correctamente.
  • Código 404 Not Found: No se encontró ningún cliente ogLive con el índice o nombre de archivo ISO proporcionado.

Regenerar Archivo de Información de los ogLive

Regenera el archivo de información de los clientes ogLive instalados.

URL: /ogboot/v1/oglives Método HTTP: PUT

Ejemplo de Solicitud:

curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogboot/v1/oglives

Respuestas:

  • Código 200 OK: El archivo de información de los clientes ogLive se regeneró correctamente.
  • Código 500 Internal Server Error: Ocurrió un error al intentar regenerar el archivo de información de los clientes ogLive.

Mostrar Menú de Descarga de Imagen de ogLive

Muestra un menú con opciones para descargar imágenes de ogLive disponibles.

URL: /ogboot/v1/images/download Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/images/download

Respuestas:

  • Código 200 OK: El menú de descarga de imágenes de ogLive se obtuvo exitosamente.
    • Contenido: Menú de descarga de imágenes de ogLive en formato JSON.

Obtener Todos los Archivos de Arranque

Obtiene una lista de todos los archivos de arranque disponibles.

URL: /ogboot/v1/pxes Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxes

{
  "boot_files": [
    "01-00:50:56:22:11:11",
    "01-00:50:56:22:11:12"
  ]
}

Respuestas:

  • Código 200 OK: La lista de todos los archivos de arranque se obtuvo exitosamente.
    • Contenido: Lista de archivos de arranque en formato JSON.

Obtener Configuración de Arranque

Obtiene el contenido del archivo de configuración de arranque específico para un cliente utilizando su dirección MAC.

URL: /ogboot/v1/clients/pxes/{mac} Método HTTP: GET

Parámetros de la URL:

  • {mac}: La dirección MAC del cliente cuyo archivo de configuración de arranque se desea obtener.

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/pxes/00:11:22:33:44:55

#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788

set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788
kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot

Respuestas:

  • Código 200 OK: El archivo de arranque para la dirección MAC especificada se encontró y se devuelve correctamente.
    • Contenido: El archivo de arranque en formato adecuado para su uso en el cliente correspondiente.
  • Código 404 Not Found: No se encontró ningún archivo de arranque para la dirección MAC especificada.

Crear Archivo de Arranque

Crea un nuevo archivo de arranque utilizando los parámetros proporcionados.

URL: /ogboot/v1/pxes Método HTTP: POST

Cuerpo de la Solicitud:

  • Datos necesarios para la creación del archivo de arranque, como el nombre, la configuración, etc.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -d '{"mac": "00:50:56:22:11:12", "config": "#!ipxe\nset timeout 0\nset timeout-style hidden\n\nset ISODIR ogLive\nset default 0\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788\n\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788\nkernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}\ninitrd tftp://172.17.8.71/ogLive/oginitrd.img\nboot"}' http://example.com/ogboot/v1/pxes

Respuestas:

  • Código 200 OK: El archivo de arranque se creó exitosamente.
  • Código 400 Bad Request: La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.

Eliminar Archivo de Arranque

Elimina un archivo de arranque específico utilizando su identificador único.

URL: /ogboot/v1/clients/pxes Método HTTP: DELETE

Parámetros de la URL:

  • {mac}: La dirección MAC del cliente cuyo archivo de arranque se desea obtener.

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/clients/pxes/00:11:22:33:44:55

Respuestas:

  • Código 200 OK: El archivo de arranque se eliminó correctamente.
  • Código 404 Not Found: No se encontró ningún archivo de arranque con el identificador único especificado.

Actualizar Repositorio de Arranque

Actualiza el repositorio de archivos de arranque con los archivos modificados.

URL: /ogboot/v1/pxes Método HTTP: PUT

Cuerpo de la Solicitud:

  • Fichero en json con la configuración de arranque de la máquina

Ejemplo de Solicitud:

curl -X PUT -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"mac": "00:50:56:22:11:12", "config": "#!ipxe\nset timeout 0\nset timeout-style hidden\n\nset ISODIR ogLive\nset default 0\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788\n\nset kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1  ogprof=false vga=788\nkernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}\ninitrd tftp://172.17.8.71/ogLive/oginitrd.img\nboot"}' http://example.com/ogboot/v1/pxes

Respuestas:

  • Código 200 OK: El repositorio de arranque se actualizó exitosamente con los archivos modificados.
  • Código 400 Bad Request: La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.

Obtener Todas las Plantillas

Obtiene una lista de todas las plantillas de arranque disponibles.

URL: /ogboot/v1/pxe-templates Método HTTP: GET

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates

Respuestas:

  • Código 200 OK: La lista de todas las plantillas de arranque se obtuvo exitosamente.
    • Contenido: Lista de plantillas de arranque en formato JSON.

Obtener Contenido de la Plantilla

Obtiene el contenido de una plantilla de arranque específica utilizando su nombre.

URL: /ogboot/v1/pxe-templates/{nombre} Método HTTP: GET

Parámetros de la URL:

  • {nombre}: El nombre de la plantilla de arranque cuyo contenido se desea obtener.

Ejemplo de Solicitud:

curl -X GET -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1

#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.1.100:192.168.1.1:192.168.1.1:255.255.255.0:pc01:eth0:none group=Aula_virtual ogrepo=192.168.1.10 oglive=192.168.1.10 oglog=192.168.1.10 ogshare=192.168.1.10 ogprof=false vga=788
time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
time initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot

Respuestas:

  • Código 200 OK: El contenido de la plantilla de arranque se obtuvo exitosamente.
    • Contenido: Contenido de la plantilla de arranque en formato adecuado para su uso.

Crear Plantilla

Crea una nueva plantilla de arranque utilizando los datos proporcionados.

URL: /ogboot/v1/pxe-templates Método HTTP: POST

Cuerpo de la Solicitud:

  • {name_template}: Nombre de la plantilla
  • {ip}: Dirección IP del cliente.
  • {gateway}: Puerta de enlace predeterminada.
  • {netmask}: Máscara de red.
  • {hostname}: Nombre del host del cliente.
  • {interface}: Interfaz de red utilizada por el cliente.
  • {group}: Grupo al que pertenece el cliente.
  • {ogrepo}: Dirección IP del repositorio de ogLive.
  • {oglive}: Dirección IP del servidor ogLive.
  • {oglog}: Dirección IP del servidor de logs.
  • {ogshare}: Dirección IP del servidor de archivos compartidos.
  • {ogprof}: Valor booleano que indica si el perfil del cliente está habilitado o deshabilitado.
  • {vga}: Modo VGA utilizado para la interfaz de usuario.

Ejemplo de Solicitud:

curl -X POST -H "Authorization: $API_KEY" -H "Content-Type: application/json" -d '{"name_template":"template1","ip": "192.168.1.100", "gateway": "192.168.1.1", "netmask": "255.255.255.0", "hostname": "pc01", "interface": "eth0", "group": "Aula_virtual", "ogrepo": "192.168.1.10", "oglive": "192.168.1.10", "oglog": "192.168.1.10", "ogshare": "192.168.1.10", "ogprof": false, "vga": 788, "tftp_server_ip": "172.17.8.71"}' http://example.com/ogboot/v1/pxe-templates


#!ipxe
set timeout 0
set timeout-style hidden

set ISODIR ogLive
set default 0
set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.1.100:192.168.1.1:192.168.1.1:255.255.255.0:pc01:eth0:none group=Aula_virtual ogrepo=192.168.1.10 oglive=192.168.1.10 oglog=192.168.1.10 ogshare=192.168.1.10 ogprof=false vga=788
time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs}
time initrd tftp://172.17.8.71/ogLive/oginitrd.img
boot

Respuestas:

  • Código 200 OK: La plantilla de arranque se creó exitosamente.
    • Contenido: Plantilla generada a partir de los parámetros pasados en la petición.
  • Código 400 Bad Request: La solicitud no pudo ser procesada debido a un error en los datos proporcionados en el cuerpo de la solicitud.

Regenerar Plantilla

Regenera el contenido de una plantilla de arranque específica utilizando su nombre.

URL: /ogboot/v1/pxe-templates/{nombre} Método HTTP: PUT

Parámetros de la URL:

  • {nombre}: El nombre de la plantilla de arranque que se desea regenerar.

Ejemplo de Solicitud:

curl -X PUT -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1

Respuestas:

  • Código 200 OK: El contenido de la plantilla de arranque se regeneró exitosamente.
  • Código 404 Not Found: No se encontró ninguna plantilla de arranque con el nombre especificado.

Eliminar Plantilla

Elimina una plantilla de arranque específica utilizando su nombre.

URL: /ogboot/v1/pxe-templates/{nombre} Método HTTP: DELETE

Parámetros de la URL:

  • {nombre}: El nombre de la plantilla de arranque que se desea eliminar.

Ejemplo de Solicitud:

curl -X DELETE -H "Authorization: $API_KEY" http://example.com/ogboot/v1/pxe-templates/template1

Respuestas:

  • Código 200 OK: La plantilla de arranque se eliminó correctamente.
  • Código 404 Not Found: No se encontró ninguna plantilla de arranque con el nombre especificado.