ogboot/README.md

30 KiB

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.

Instalación

Requisitos Previos:

  • Sistema Operativo: Ubuntu 24.
  • Python 3: La instalación se ha probado con la versión Python 3.12.3.
    python3 --version
    Python 3.12.3
    

Instalación de Python 3:

Ejecuta el siguiente comando para instalar Python 3 y pip:

apt-get install -y python3 python3-pip

Configuración Inicial:

El archivo de configuración ya viene incluido en el repositorio, por lo que solo necesitas modificarlo con los parámetros adecuados:

{
    "ogCore_ServerIP": "172.17.8.82",
    "ogBoot_ServerIP": "172.17.8.37",
    "ogBoot_Dir": "/opt/opengnsys/ogboot",
    "ogBootSambaUser": "opengnsys",
    "ogBootSambaPass": "og"
}
  • ogCore_ServerIP: IP del servidor ogcore.
  • ogBoot_ServerIP: IP del servidor ogboot.
  • ogBoot_Dir: Directorio de instalación de ogboot.
  • ogBootSambaUser y ogBootSambaPass: Usuario y contraseña de Samba.

Instalación:

  1. Asegúrate de que Python 3 esté instalado.
  2. Modifica el archivo de configuración existente con los parámetros necesarios.

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/{iso}
  8. Desinstalar cliente ogLive y eliminar imagen - DELETE /ogboot/v1/oglives/{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/pxes/{mac}
  13. Crear archivo de arranque - POST /ogboot/v1/pxes
  14. Eliminar archivo de arranque - DELETE /ogboot/v1/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 Estado de ogboot

Devuelve el uso de disco, el cliente ogLive predeterminado, la lista de ogLives instalados y el estado de los servicios.

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

Ejemplo de Solicitud:

curl -X GET  http://example.com/ogboot/v1/status

Respuestas:

  • Código 200 OK: El estado de ogboot se obtuvo exitosamente.

    • Contenido:
      {
          "success": "Status retrieved successfully",
          "message": {
              "disk_usage": {
                  "total": "22591996",
                  "used": "11995812",
                  "available": "9542092",
                  "percentage": "56%"
              },
              "default_oglive": "ogLive-6.8.0-i386-20241014",
              "installed_oglives": [
                  {
                      "id": "dcca1bf9762189e147cc4cde926392b1",
                      "distribution": "noble",
                      "kernel": "6.8.0-31-generic-amd64-r20240716",
                      "architecture": "i386",
                      "revision": "20241014",
                      "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241014"
                  },
                  {
                      "id": "ad8222511753d4013be21602899d642e",
                      "distribution": "noble",
                      "kernel": "6.8.0-31-generic-amd64-r20240716",
                      "architecture": "i386",
                      "revision": "20241017",
                      "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241017"
                  }
              ],
              "services_status": {
                  "tftpboot": "active",
                  "nginx": "active"
              }
          }
      }
      
  • Código 404 Not Found: No se encontraron clientes ogLive instalados ni predeterminados.

    • Contenido:
      {
          "error": "NOT_FOUND",
          "message": "No default or installed ogLives found."
      }
      
  • Código 500 Internal Server Error: Se produjo un error del servidor al recuperar el estado.

    • Posibles respuestas:
      {
          "error": "FAILED_TO_RETRIEVE_DISK_USAGE",
          "message": "Error to retrieve disk usage"
      }
      
      o
      {
          "error": "FAILED_TO_RETRIEVE_OGLIVE_CONFIGURATION",
          "message": "Error to retrieve ogLive configuration"
      }
      
      o
      {
          "error": "FAILED_TO_RETRIEVE_SERVICES_STATUS",
          "message": "Error to retrieve services status"
      }
      

Obtener Menú de Descargas de ogLive

Devuelve la lista de ISOs de ogLive disponibles para descargar.

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

Ejemplo de Solicitud:

curl -X GET  http://example.com/ogboot/v1/oglives/isos

Respuestas:

  • Código 200 OK: Las ISOs se obtuvieron exitosamente.

    • Contenido:
      {
          "success": "ISOs retrieved successfully",
          "message": [
              {
                "id": "1",
                "filename": "ogLive-noble-6.8.0-31-generic-amd64-r20240716-20241014.iso",
                "url": "https://ognproject.evlt.uma.es/oglive//ogLive-noble-6.8.0-31-generic-amd64-r20240716-20241014.iso",
                "installed": true,
                "compatible": false
              },
              {
                "id": "2",
                "filename": "ogLive-noble-6.8.0-31-generic-amd64-r20240716-20241017.iso",
                "url": "https://ognproject.evlt.uma.es/oglive//ogLive-noble-6.8.0-31-generic-amd64-r20240716-20241017.iso",
                "installed": true,
                "compatible": false
              }
      
          ]
      }
      
  • Código 500 Internal Server Error: Ocurrió un error al intentar recuperar las ISOs.

    • Contenido:
      {
          "error": "FAILED_TO_RETRIEVE_ISOS",
          "message": "Error to retrieve ISO downloads"
      }
      

Obtener Lista de Todos los Clientes ogLive Instalados

Devuelve la lista de clientes ogLive instalados, incluyendo el cliente ogLive predeterminado.

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

Ejemplo de Solicitud:

curl -X 'GET' \
  'http://172.17.8.37/ogboot/v1/oglives' \
  -H 'accept: application/json'

Respuestas:

  • Código 200 OK: La lista de clientes ogLive instalados se obtuvo exitosamente.

    • Contenido:
      {
          "success": "ogLive clients retrieved successfully",
          "message": {
              "default_oglive": "ogLive-6.8.0-i386-20241014",
              "installed_ogLives": [
                  {
                      "id": "dcca1bf9762189e147cc4cde926392b1",
                      "distribution": "noble",
                      "kernel": "6.8.0-31-generic-amd64-r20240716",
                      "architecture": "i386",
                      "revision": "20241014",
                      "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241014"
                  },
                  {
                      "id": "ad8222511753d4013be21602899d642e",
                      "distribution": "noble",
                      "kernel": "6.8.0-31-generic-amd64-r20240716",
                      "architecture": "i386",
                      "revision": "20241017",
                      "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241017"
                  }
              ]
          }
      }
      
  • Código 404 Not Found: No se encontraron clientes ogLive instalados.

    • Contenido:
      {
          "error": "NOT_FOUND",
          "message": "No ogLive clients found."
      }
      
  • Código 500 Internal Server Error: Se produjo un error del servidor o un error desconocido al recuperar la lista de clientes.

    • Posibles respuestas:
      {
          "error": "SERVER_ERROR",
          "message": "Failed to retrieve ogLive clients due to server error."
      }
      
      o
      {
          "error": "UNKNOWN_ERROR",
          "message": "An unknown error occurred."
      }
      

Obtener Información de un Cliente ogLive Instalado

Devuelve la información de un cliente ogLive instalado identificado por su checksum.

URL: /ogboot/v1/oglives/{checksum}
Método HTTP: GET

Parámetros de Ruta:

  • checksum (string): Checksum del cliente ogLive instalado.
    • Ejemplo: 9e49a085ba74f97a81bdf9b3d0785094

Ejemplo de Solicitud:

curl -X 'GET' \
  'http://172.17.8.37/ogboot/v1/oglives/9e49a085ba74f97a81bdf9b3d0785094' \
  -H 'accept: application/json'

Respuestas:

  • Código 200 OK: El cliente ogLive se obtuvo exitosamente.

    • Contenido:
      {
          "success": "ogLive client retrieved successfully",
          "message": {
              "id": "9e49a085ba74f97a81bdf9b3d0785094",
              "distribution": "noble",
              "kernel": "6.8.0-31-generic-amd64-r20240716",
              "architecture": "i386",
              "revision": "20241014",
              "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241014"
          }
      }
      
  • Código 404 Not Found: No se encontró el cliente ogLive con el checksum proporcionado.

    • Contenido:
      {
          "error": "NOT_FOUND",
          "message": "ogLive client with checksum 9e49a085ba74f97a81bdf9b3d0785094 not found."
      }
      
  • Código 500 Internal Server Error: Error del servidor al intentar recuperar la información del cliente ogLive.

    • Contenido:
      {
          "error": "SERVER_ERROR",
          "message": "Failed to retrieve ogLive client."
      }
      

Obtener Información del Cliente ogLive por Defecto

Devuelve la información del cliente ogLive configurado como predeterminado.

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

Ejemplo de Solicitud:

curl -X 'GET' \
  'http://172.17.8.37/ogboot/v1/oglives/default' \
  -H 'accept: application/json'

Respuestas:

  • Código 200 OK: La información del cliente ogLive por defecto se obtuvo exitosamente.

    • Contenido:
      {
          "success": "se ha obtenido el oglive por defecto",
          "message": {
              "id": "default_oglive_id",
              "distribution": "noble",
              "kernel": "6.8.0-31-generic-amd64-r20240716",
              "architecture": "i386",
              "revision": "20241014",
              "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241014"
          }
      }
      
  • Código 500 Internal Server Error: Ocurrió un error al intentar recuperar el cliente ogLive por defecto.

    • Contenido:
      {
          "error": "SERVER_ERROR",
          "message": "Failed to retrieve default ogLive."
      }
      

Establecer Cliente ogLive por Defecto

Permite establecer un cliente ogLive como predeterminado usando su checksum.

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

Cuerpo de la Solicitud:

  • Debe enviarse un JSON con la siguiente estructura:
    {
        "checksum": "9e49a085ba74f97a81bdf9b3d0785094"
    }
    
    • checksum (string): El checksum del cliente ogLive que se va a establecer como predeterminado.

Ejemplo de Solicitud:

curl -X 'PUT' \
  'http://172.17.8.37/ogboot/v1/oglives/default' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
        "checksum": "9e49a085ba74f97a81bdf9b3d0785094"
      }'

Respuestas:

  • Código 200 OK: El cliente ogLive se estableció como predeterminado exitosamente.

    • Contenido:
      {
          "success": "ogLive client set as default successfully",
          "message": {
              "id": "9e49a085ba74f97a81bdf9b3d0785094",
              "distribution": "noble",
              "kernel": "6.8.0-31-generic-amd64-r20240716",
              "architecture": "i386",
              "revision": "20241014",
              "directory": "/opt/ogboot/tftpboot//ogLive-6.8.0-i386-20241014"
          }
      }
      
  • Código 400 Bad Request: Los datos de entrada son inválidos.

    • Contenido:
      {
          "error": "INVALID_INPUT",
          "message": "Invalid input data: checksum is required."
      }
      
  • Código 500 Internal Server Error: Ocurrió un error al intentar establecer el cliente ogLive como predeterminado.

    • Contenido:
      {
          "error": "SERVER_ERROR",
          "message": "Failed to set ogLive as default."
      }
      

Iniciar Instalación de un Cliente ogLive

Inicia el proceso de instalación de un cliente ogLive a partir de una URL de descarga proporcionada. Este endpoint es asincrónico y, tras la instalación, envía una notificación a la URL del webhook configurada en ogCore.

URL: /ogboot/v1/oglives/install
Método HTTP: POST

Cuerpo de la Solicitud:

  • Se debe enviar un JSON con la siguiente estructura:
    {
        "url": "https://ognproject.evlt.uma.es/trac/downloads/ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso",
        "id": "12345"
    }
    
    • url (string): URL del archivo ISO de ogLive a descargar e instalar.
    • id (string): ID único de transacción para rastrear el proceso de instalación.

Ejemplo de Solicitud:

curl -X 'POST' \
  'http://172.17.8.37/ogboot/v1/oglives/install' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
        "url": "https://ognproject.evlt.uma.es/trac/downloads/ogLive-focal-5.11.0-22-generic-amd64-r20210413.992ebb9.iso",
        "id": "12345"
      }'

Respuestas:

  • Código 202 Accepted: La instalación del cliente ogLive se ha iniciado correctamente.

    • Contenido:
      {
          "success": "ogLive client installation started",
          "transaction_id": "12345"
      }
      
  • Código 400 Bad Request: Los datos de entrada no son válidos.

    • Contenido:
      {
          "error": "Invalid input data",
          "details": "URL and transaction ID are required."
      }
      
  • Código 500 Internal Server Error: Fallo al iniciar la instalación del cliente ogLive.

    • Contenido:
      {
          "error": "Failed to initiate ogLive installation",
          "details": "Detalles del error específico"
      }
      

Nota: Este endpoint ejecuta la instalación en segundo plano y notifica al ogCore a través de un webhook en la URL configurada al finalizar el proceso, enviando el estado, el código de respuesta (200 si es exitoso) y un mensaje.

Desinstalar un Cliente ogLive

Permite desinstalar un cliente ogLive identificado por su checksum.

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

Parámetros de Ruta:

  • checksum (string): Checksum del cliente ogLive a desinstalar.
    • Ejemplo: 9e49a085ba74f97a81bdf9b3d0785094

Ejemplo de Solicitud:

curl -X 'DELETE' \
  'http://172.17.8.37/ogboot/v1/oglives/9e49a085ba74f97a81bdf9b3d0785094' \
  -H 'accept: application/json'

Respuestas:

  • Código 200 OK: El cliente ogLive se desinstaló exitosamente.

    • Contenido:
      {
          "message": "ogLive client uninstalled successfully",
          "details": "Detalles adicionales de la desinstalación."
      }
      
  • Código 404 Not Found: No se encontró el cliente ogLive con el checksum proporcionado.

    • Contenido:
      {
          "error": "NOT_FOUND",
          "message": "ogLive client not found."
      }
      
  • Código 403 Forbidden: No se puede desinstalar el cliente ogLive predeterminado.

    • Contenido:
      {
          "error": "FORBIDDEN",
          "message": "Cannot uninstall the default ogLive client."
      }
      
  • Código 500 Internal Server Error: Ocurrió un error al intentar desinstalar el cliente ogLive.

    • Contenido:
      {
          "error": "SERVER_ERROR",
          "message": "Failed to uninstall ogLive client."
      }
      
  • Otros errores no previstos:

    {
        "error": "UNKNOWN_ERROR",
        "message": "An unknown error occurred."
    }
    

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.
  • Código 500 Internal Server Error: Ocurrió un error al intentar obtener la lista de todos los archivos de arranque disponibles.

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/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.
  • Código 500 Internal Server Error: Ocurrió un error al subir el archivo de arranque.

Eliminar Archivo de Arranque

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

URL: /ogboot/v1/pxes/{MAC} 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.
  • Código 500 Internal Server Error: Ocurrió un error al eliminar el archivo de arranque.

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.
  • Código 500 Internal Server Error: Ocurrió un error al actualizar el archivo de arranque.

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.
  • Código 500 Internal Server Error: Ocurrió un error al obtener las plantillas de arranque.

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.
  • 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.
  • Código 500 Internal Server Error: Ocurrió un error al obtener la plantilla de arranque.

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.
  • {tftp_server_ip}: Dirección IP del servidor TFTP desde el cual se descargarán los archivos necesarios para el arranque del sistema

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.
  • Código 500 Internal Server Error: Ocurrió un error al crear la plantilla de arranque.

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.
  • Código 500 Internal Server Error: Ocurrió un error al regenerar la plantilla de arranque.

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.
  • Código 500 Internal Server Error: Ocurrió un error al eliminar la plantilla de arranque.