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 (SysMansystemd) 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 (SysMansystemd) 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
systemdarchivos de unidad de servicio para aplicaciones controladas (obligatorio parasystemdsystemdaplicaciones gestionadas). -
usr/conf (opcional): contiene
.yamlarchivos para la generación de políticas (obligatorio paraSysManaplicaciones 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.imaarchivos para las aplicaciones del paquete. -
/etc/systemd/system/: Contiene
.servicearchivos para establecer políticas de aplicación y servicios adjuntos. -
/usr/conf/: Contiene
.yamlarchivos paraSysManaplicaciones 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
.yamlLos 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
.yamlarchivos de configuración en la carpeta etc/config/. - Ejecute la herramienta con opciones
Jet-evoespecí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-evoherramienta.
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-evoespecí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-evoherramienta.
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