Creación de aplicaciones de terceros
Junos OS Evolved admite paquetes de aplicaciones firmadas de terceros desarrolladas en C, C++ y Python con el SDK de JET para Junos OS Evolved. El administrador de aplicaciones de Junos OS Evolved () o el administrador del sistema Linux (SysMan
systemd
) controlan estas aplicaciones de terceros en función de la naturaleza y el uso de la aplicación.
SDK de JET para Junos OS evolucionado
Antes de compilar una aplicación de terceros para ejecutarla en el dispositivo, primero debe generar claves de firma para conceder permiso a la aplicación para ejecutarse. Consulte Generación de claves de firma para obtener más información.
Junos OS Evolved versión 22.4R1 y versiones posteriores admiten el SDK de JET para Junos OS Evolved en las siguientes plataformas:
ACX Serie | PTX Serie | QFX |
---|---|---|
ACX7100-32C | PTX10001-36MR | QFX5130-32CD |
ACX7100-48L | PTX10003 | QFX5130-48C |
ACX7509 | PTX10004 | QFX5220 |
PTX10008 | ||
PTX10016 |
- Descarga del SDK de JET y del kit de herramientas de JET
- Instalación del SDK de JET y del kit de herramientas de JET para Junos OS Evolved
Descarga del SDK de JET y del kit de herramientas de JET
Antes de empezar a crear una aplicación de terceros, descargue e instale el SDK de JET para Junos OS evolucionado y el Kit de herramientas de JET para Junos OS evolucionado. Puede encontrar estos archivos en la página Kit de herramientas de extensión de Juniper (para Junos Evolved):
-
El SDK de JET para Junos OS evolucionó: jet-junos-evo-sdk--releaseEVO.deb
-
El kit de herramientas JET para Junos OS evolucionó: jet-junos-evo-toolkit--releaseEVO.tar.gz
Instalación del SDK de JET y del kit de herramientas de JET para Junos OS Evolved
Después de descargar JET Toolkit for Junos OS Evolved, descomprima el archivo tar y extraiga la Jet-evo
utilidad del paquete.
A partir de Junos OS Evolved versión 23.2R1 y posteriores, también puede extraer la Jet-evo-bundle-iso
utilidad para crear ISO incluidos. Para obtener más información sobre las ISO agrupadas, consulte Creación de una ISO agrupada.
Después de descargar el SDK, instálelo y obténgalo. El SDK de JET para Junos OS Evolved es un paquete Debian que se puede instalar en distribuciones Linux basadas en Debian como Ubuntu y Debian. Utilice el siguiente comando de Linux para instalar el SDK de JET para Junos OS Evolved versión 22.4R1:
user@host:~$ dpkg -i jet-junos-evo-sdk-22.4R1.10-EVO.deb
El dpkg
comando instalará el SDK en la carpeta /opt/jnpr/sdk/3.0.2-31.
A continuación, debe obtener el SDK para su paquete de terceros. Utilice los siguientes comandos para obtener el SDK de JET para Junos OS Evolved para un paquete de Junos OS Evolved versión 22.4R1:
user@host:~/package-name$ source /opt/jnpr/sdk/3.0.2-31/environment-setup-core2-32-poky-linux user@host:~/package-name$ source/opt/jnpr/sdk/3.0.2-31/environment-setup-core2-64-poky-linux user@host:~~/package-name$ source /opt/jnpr/sdk/3.0.2-31/environment-setup-x86-pokymllib32-linux
SysMan y las aplicaciones controladas por systemd
El gestor de aplicaciones nativo de Junos OS Evolved () o el gestor de sistemas Linux (SysMan
systemd
) pueden controlar aplicaciones de terceros. las aplicaciones controladas pueden aprovechar la infraestructura distribuida de Junos OS Evolved y ejecutarse en varios nodos. SysMan
Mientras tanto, las aplicaciones administradas solo pueden ejecutarse en un solo nodo, systemd
por lo que SysMan
es el administrador de aplicaciones preferido en la mayoría de los casos.
SysMan
y systemd
las aplicaciones administradas utilizan diferentes métodos para definir políticas a través de archivos de servicio. Las aplicaciones administradas a través utilizan SysMan
.yaml
archivos para definir políticas y asignar servicios. Consulte Archivos .yaml para obtener más información.
Las aplicaciones administradas a través de definen políticas y asignan servicios a través de systemd
.service
archivos. Consulte Archivos de servicio para obtener más información.
Cuando se produce un cambio de motor de enrutamiento, las aplicaciones administradas se iniciarán automáticamente en el nuevo motor de enrutamiento principal, SysMan
pero systemd
las aplicaciones administradas continuarán ejecutándose en el motor de enrutamiento original. Recomendamos utilizar SysMan
aplicaciones controladas cuando sea posible en sistemas de motor de enrutamiento dual.
Estructura de carpetas para aplicaciones de terceros
Los paquetes de aplicaciones de terceros siguen una estructura de carpetas específica en Junos OS Evolved.
Estructura de carpetas root-fs
La root-fs
carpeta contiene las siguientes carpetas:
-
usr/sbin (obligatorio): contiene el archivo ejecutable binario para la aplicación.
-
usr/lib64 (opcional): Contiene las librerías necesarias para la aplicación.
-
etc/sytemd/sytem (opcional): contiene
systemd
archivos de unidad de servicio para aplicaciones controladas (obligatorio parasystemd
systemd
aplicaciones gestionadas). -
usr/conf (opcional): contiene
.yaml
archivos para la generación de políticas (obligatorio paraSysMan
aplicaciones administradas).
Puede encontrar las siguientes carpetas opcionales fuera de la root-fs
carpeta:
-
scripts (opcional): contiene los scripts de preinstalación, postinstalación y predesinstalación.
-
etc/config (opcional): Contiene configuraciones específicas de la aplicación.
Estructura de carpetas posterior a la instalación
Después de instalar el paquete de terceros, almacenará los archivos en las siguientes rutas de forma predeterminada:
-
/usr/sbin/: Contiene los archivos ejecutables binarios para las aplicaciones del paquete.
-
/usr/lib64/: Contiene las bibliotecas para las aplicaciones del paquete.
-
/data/var/external//current-evo-version: contiene archivos de script de preinstalación, postinstalación y predesinstalación, así como
.bom
.sh
.fs
, y.ima
archivos para las aplicaciones del paquete. -
/etc/systemd/system/: Contiene
.service
archivos para establecer políticas de aplicación y servicios adjuntos. -
/usr/conf/: Contiene
.yaml
archivos paraSysMan
aplicaciones controladas.
Puede encontrar los archivos de bibliotecas y binarios en read-only
carpetas. No recomendamos colocar bibliotecas y binarios en read-write
carpetas habilitadas como / etc o /var.
Archivos de aplicaciones de terceros
Los paquetes de aplicaciones de terceros incluyen varios tipos de archivos. Siga leyendo para obtener más información sobre los diferentes tipos de archivos:
Makefile
El Makefile es un archivo necesario para compilar e instalar su aplicación de terceros. El Makefile debe incluir las rutas de otros archivos, como el archivo SRC, el archivo de configuración y .yaml
el archivo. También controla la ubicación de instalación de los archivos necesarios.
SRC de archivos
Los archivos SRC contienen el código fuente de la aplicación. Puede escribir archivos SRC en C, C ++ o Python. Estos archivos son necesarios para la función de su aplicación de terceros.
Archivos de script
Los archivos de script incluyen scripts de preinstalación, postinstalación y predesinstalación. Estos archivos opcionales son scripts de shell que puede personalizar para adaptarse a las necesidades de su aplicación.
-
Los scripts de preinstalación se ejecutan antes de instalar el paquete de terceros. Estos scripts se utilizan normalmente para probar y comprobar varios factores en el dispositivo. Por ejemplo, puede crear un script de preinstalación para comprobar la versión de Junos OS Evolved que se está ejecutando antes de iniciar la instalación.
-
Los scripts posteriores a la instalación se ejecutan después de instalar el paquete de terceros. Estos scripts contienen esos comandos que se ejecutarán después de finalizar la instalación. Por ejemplo, crear archivos de registro adicionales o un directorio de registro para el paquete.
-
Los scripts previos a la desinstalación se ejecutan antes de desinstalar el paquete de terceros. Estos scripts se utilizan normalmente para limpiar carpetas y archivos creados durante la instalación del paquete de terceros.
Todos los scripts deben devolver cero si la ejecución se ejecuta correctamente y distinto de cero tras un error.
Los scripts se pueden crear en cualquier carpeta. Durante el proceso de creación de paquetes de terceros con la herramienta, puede ingresar las rutas a cada tipo de script y se instalarán en la Jet-evo
carpeta / data/var/external//current-evo-version de su dispositivo. Para obtener más información sobre la herramienta, consulte Configuración de la Jet-evo
herramienta Jet-evo.
Si va a crear scripts personalizados, se recomienda no utilizar ningún bash
comando que cree resultados de CLI adicionales. Puede redirigir la salida de la CLI a su propio archivo de registro.
Archivos de servicio
Los archivos de servicio son archivos obligatorios para systemd
aplicaciones controladas. Estos archivos controlan la directiva de la aplicación y determinan en qué nodos y motores de enrutamiento se ejecuta la aplicación.
Debe colocar los archivos de servicio dentro de la carpeta etc/systemd/system/ en el directorio de root-fs
su paquete.
El ejemplo siguiente es un .service
archivo para una aplicación denominada Sample App
. Este .service
archivo define la ruta de acceso para iniciar la aplicación y el estado del sistema necesario para ejecutar la aplicación.
[Unit] Description="Sample App" After=syslog.target sysman.service network.target network-online.target Before=pre-evoapp-shutdown.service OnFailure=failure_handler@%p.service [Service] EnvironmentFile=/usr/conf/system/system_env TimeoutStopSec=60 WorkingDirectory=/usr/sbin ExecStart=/usr/evo/evostart -d /usr/sbin -p %p /usr/bin/python /usr/sbin/sample/sample_app.py ExecStop=/usr/sbin/exit_foo.py --bar ExecStopPost=/usr/evo/exit_handler.sh %p Restart=no StartLimitBurst=3 StartLimitInterval=300 MemoryLimit=2G RemainAfterExit=true SyslogIdentifier=sample_app
Los siguientes campos son obligatorios y deben utilizarse con la misma sintaxis que el archivo de ejemplo:
-
Después
-
Antes
-
OnFailure
-
Directorio de trabajo
-
ExecStart
-
ExeStopPost
Archivos .yaml
.yaml
Los archivos son archivos obligatorios para SysMan
aplicaciones controladas. Estos archivos se utilizan para pasar directivas específicas de la aplicación que se utilizan en la creación de unidades de servicio basadas y políticas basadas durante la instalación. archivos también se utilizan para determinar en qué nodos y SysMan
motores de systemd
enrutamiento se ejecuta la aplicación. .yaml
Si incluye ambos .yaml
archivos y para la misma aplicación en un paquete, los atributos de .service
archivo tendrán prioridad y .service
la aplicación se tratará como una sysman
aplicación controlada.
Los paquetes de terceros pueden tener más de un servicio asociado con el paquete. Cada aplicación controlada por SysMan
debe tener un archivo independiente .yaml
para cada servicio adjunto, con los nombres de servicio como nombres de .yaml
archivo. Los nombres de archivo deben coincidir con los nombres de servicio, en lugar del nombre del paquete, ya que los nombres de paquetes de terceros pueden ser diferentes de los servicios incluidos con el paquete. .yaml
Debe colocar .yaml
los archivos dentro de la usr/conf
carpeta en el directorio del root-fs
paquete.
Un .yaml
archivo consta de varios campos que contienen información sobre la aplicación correspondiente. Consulte la siguiente lista para ver las definiciones de los .yaml
campos de archivo:
binpath | Define la ruta de acceso al archivo ejecutable binario. |
exec-start | Define cómo iniciar la aplicación, incluida la ruta de acceso y los argumentos necesarios para iniciar la aplicación. Este campo corresponde al |
working-dir | Define la ruta de acceso al directorio primario con archivos binarios. |
id | Controla el nombre de la aplicación. Debe coincidir con el nombre del |
network | Establece el tipo de red, con valores de |
on-exit | Controla la configuración para reiniciar la aplicación al salir.
|
resource | Establece los límites de los recursos del sistema utilizados por la aplicación:
|
El siguiente archivo de ejemplo muestra la configuración de una aplicación de ejemplo .yaml
que se ejecutará en el motor de enrutamiento principal con solo 1 instancia. Establecer el all_nodes
campo en impide que la aplicación se ejecute en false
todos los motores de enrutamiento. Establecer el max_number_of_instances
campo en 1
limita la aplicación a 1 instancia. Establecer el campo para -re
que la aplicación se ejecute en el node-attribute
motor de enrutamiento. Con esta configuración, si el motor de enrutamiento principal deja de funcionar, la aplicación se iniciará automáticamente en el motor de enrutamiento de reserva.
description: "Sample app" binpath: /usr/sbin/sample/sample_app.py exec-start: "/usr/bin/python /usr/sbin/sample/sample_app.py" working-dir: /usr/sbin id: sample-app network: internal on-exit: restart: true resource: instances: all_nodes: false max_num_of_instances: 1 node-attributes: - re max-memory: 2G startup: true
Creación de un paquete de terceros
La Jet-evo
herramienta crea paquetes de terceros utilizando las aplicaciones, los archivos binarios y las bibliotecas creadas por el desarrollador de la aplicación. El proceso para crear un paquete de terceros difiere en función de si el proceso evolucionado SysMan
de Junos OS o el proceso de Linux systemd
administrarán el paquete. Consulte a continuación para obtener más detalles sobre cada escenario específico:
- Crear un paquete administrado de SysMan
- Crear un paquete administrado de systemd
- Configuración de la herramienta Jet-evo
Crear un SysMan
paquete administrado
Las aplicaciones externas gestionadas por SysMan
necesitan tener .yaml
archivos para los servicios adjuntos a la aplicación.
- Compile y compile la aplicación con C, C++ o Python mediante el SDK de JET para Junos OS Evolved.
- Cree las carpetas necesarias como se explica en Estructura de carpetas para aplicaciones de terceros.
- Mantenga el ejecutable binario en la carpeta usr/sbin/ .
- Mantenga los archivos en la carpeta usr/conf/ y los
.yaml
archivos de configuración en la carpeta etc/config/. - Ejecute la herramienta con opciones
Jet-evo
específicas del paquete. Consulte Configuración de la herramienta Jet-evo para obtener más información sobre las opciones de configuración de laJet-evo
herramienta.
Opcionalmente, puede empaquetar su propio systemd
archivo junto con el .yaml
archivo si necesita usar funciones complejas que systemd
no se pueden incluir en un .yaml
archivo. Coloque el archivo de servicio en la carpeta etc/systemd/system / y .yaml
el archivo en la carpeta usr/conf .
Crear un systemd
paquete administrado
Las aplicaciones externas administradas por systemd
necesitan tener un .service
archivo para los servicios adjuntos a la aplicación.
- Compile y compile la aplicación con C, C++ o Python mediante el SDK de JET para Junos OS Evolved.
- Cree las carpetas necesarias como se explica en Estructura de carpetas para aplicaciones de terceros.
- Mantenga el ejecutable binario en la carpeta usr/sbin/ .
- Mantenga el archivo de servicio en la carpeta etc/systemd/system/.
- Ejecute la herramienta con opciones
Jet-evo
específicas del paquete. Consulte Configuración de la herramienta Jet-evo para obtener más información sobre las opciones de configuración de laJet-evo
herramienta.
Jet-evo
Configuración de la herramienta
La Jet-evo
herramienta se utiliza para asignar un nombre al paquete de terceros, establecer el número de versión, ejecutar scripts de instalación y establecer la ubicación de instalación del paquete de terceros. Todas estas variables se controlan mediante opciones establecidas al ejecutar el jet-evo
comando:
$ ./Jet-evo -h usage: Jet-evo [-h] -n NAME -r ROOT [-v VERSION] [-a ARCH] [-N NODE] [-i PREINSTALL] [-p POSTINSTALL] [-u PREUNINSTALL] [-d DIRECTORY] [-x] [-t] [-l LOGFILE] [-k KEY]
Consulte Generación de claves de firma para obtener información sobre cómo generar una clave privada para usarla con la Jet-evo
herramienta.
Argumentos requeridos
Se requieren los siguientes argumentos:
-n name | Establezca el nombre del paquete de terceros. |
-r root: | Defina las rutas raíz a las aplicaciones incluidas en el paquete, separadas por comas. |
-v version: | Establezca un número de versión para el paquete. |
Argumentos opcionales
Los siguientes argumentos son opcionales:
-h | Muestra un mensaje de ayuda que explica los |
-a architecture | Elija la arquitectura a la que se dirige el paquete de terceros. |
-n node | Defina los nodos a los que tiene como destino el paquete de terceros. |
-i pre-install | Especifique las rutas de los archivos para preinstalar los scripts. |
-p post-install | Especifique las rutas de los archivos para los scripts posteriores a la instalación. |
-u pre-uninstall |
Especifique las rutas de los archivos para predesinstalar scripts. |
-d directory | Establezca el directorio de destino para instalar el paquete. |
-x | Elimina todos los archivos de depuración del paquete. |
-t | Cree un archivo TAR con todos los resultados de la |
-l name | Establezca el nombre y la ruta del archivo de registro del empaquetador. |
-k key | Clave privada utilizada para firmar el paquete de terceros. |
Sintaxis de ejemplo
A continuación se muestra un ejemplo de la sintaxis del jet-evo
comando mediante un paquete denominado sample_package
con la versión 1.0.1:
$ jet-evo -n sample_package -v 1.0.1 -t -i ./src/scripts/sample_package_preinstall -p ./src/scripts/sample_package_postinstall -u ./src/scripts/sample_package_preuninstall -d ./target/ -r ./install/ -k ima-privkey.pem
Instalación de un paquete de terceros
Después de crear u obtener un paquete de aplicaciones de terceros, puede instalarlo en un dispositivo Junos OS Evolved. Un paquete puede instalar varias aplicaciones juntas. El proceso de instalación sobrescribirá cualquier aplicación previamente instalada que exista en el paquete. Recomendamos mantener las aplicaciones dentro de paquetes únicos en los diferentes paquetes.
Antes de instalar una aplicación de terceros, primero debe instalar las claves de firma y los certificados adecuados en todas las RE. La instalación fallará si las claves de firma no se generan correctamente. Consulte Generación de claves de firma para obtener más información.
Puede ver las claves instaladas mediante el show security integrity extended-keyring
comando.
Puede instalar paquetes de terceros mediante el request system software add package-name
comando. Por ejemplo:
request system software add sample_package.1.0.1.tgz
Los paquetes de terceros solo se pueden instalar desde el motor de enrutamiento maestro.
Después de instalar correctamente un paquete de terceros, el proceso de instalación copiará todos los archivos asociados en la /data/var/external/current-evo-version/
carpeta. El show version
resultado mostrará todos los paquetes de terceros en cada motor de enrutamiento para una versión de software en particular en el External Software
campo:
user@host> show version Hostname: sample_host Model: ptx10008 Junos: 22.4I20221214083306-EVO Yocto: 3.0.2 Linux Kernel: 5.2.60-yocto-standard-gae998d995 JUNOS-EVO OS 64-bit [junos-evo-install-ptx-x86-64-22.4I20221214083306-EVO] External Software: JET app sample_package 1.0.1
Para mostrar todas las versiones de Junos OS Evolved instaladas en su dispositivo y los paquetes de terceros instalados para la versión actual en cada nodo y cada motor de enrutamiento, puede usar el show software list
comando:
user@host> show system software list | no-more ------------------------------- node: re0 ------------------------------- Active boot device is primary: /dev/vda List of installed version(s) : '-' running version '>' next boot version after upgrade/downgrade '<' rollback boot version '*' deleted JSU version > junos-evo-install-ptx-x86-64-22.4I20221214085042 - [2022-12-14 09:14:39] - junos-evo-install-ptx-x86-64-22.4I20221214083306 - [2022-12-14 08:58:24] < junos-evo-install-ptx-x86-64-22.4I20221214072149 - [2022-12-14 08:04:20] junos-evo-install-ptx-x86-64-22.4I20221214055215 - [2022-12-14 06:39:46] External Software: JET app sample_package 1.0.1 ------------------------------- node: re1 ------------------------------- Active boot device is primary: /dev/vda List of installed version(s) : '-' running version '>' next boot version after upgrade/downgrade '<' rollback boot version '*' deleted JSU version > junos-evo-install-ptx-x86-64-22.4I20221214085042 - [2022-12-14 09:16:48] - junos-evo-install-ptx-x86-64-22.4I20221214083306 - [2022-12-14 08:58:59] < junos-evo-install-ptx-x86-64-22.4I20221214072149 - [2022-12-14 08:04:52] junos-evo-install-ptx-x86-64-22.4I20221214055215 - [2022-12-14 06:40:38] External Software: JET app sample_package 1.0.1