Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Erstellen von Anwendungen von Drittanbietern

Junos OS Evolved unterstützt Pakete signierter Anwendungen von Drittanbietern, die in C, C++ und Python mit dem JET SDK für Junos OS Evolved entwickelt wurden. Der Junos OS Evolved-Anwendungsmanager () oder der Linux-Systemmanager (SysMansystemd) steuert diese Anwendungen von Drittanbietern basierend auf Art und Verwendung der Anwendung.

JET-SDK für Junos OS weiterentwickelt

Bevor Sie eine Drittanbieteranwendung erstellen, die auf Ihrem Gerät ausgeführt werden soll, müssen Sie zunächst Signaturschlüssel generieren, um Ihrer Anwendung die Berechtigung zum Ausführen zu erteilen. Weitere Informationen finden Sie unter Generieren von Signaturschlüsseln .

Junos OS Evolved Version 22.4R1 und höhere Versionen unterstützen das JET SDK für Junos OS Evolved auf den folgenden Plattformen:

Tabelle 1: JET-SDK für von Junos OS Evolved unterstützte Plattformen
ACX-Serie PTX-Serie QFX-Serie
ACX7100-32C PTX10001-36MR QFX5130-32CD
ACX7100-48L PTX10003 QFX5130-48C
ACX7509 PTX10004 QFX5220
  PTX10008  
  PTX10016  

Herunterladen des JET SDK und des JET Toolkits

Bevor Sie mit der Entwicklung einer Drittanbieteranwendung beginnen, laden Sie das JET SDK für Junos OS Evolved und das JET Toolkit für Junos OS Evolved herunter und installieren Sie es. Sie finden diese Dateien auf der Seite Juniper Extension Toolkit (For Junos Evolved):

  • Das JET-SDK für Junos OS weiterentwickelt: jet-junos-evo-sdk--releaseEVO.deb

  • Das JET Toolkit für Junos OS weiterentwickelt: jet-junos-evo-toolkit--releaseEVO.tar.gz

Installieren des JET SDK und des JET Toolkit für Junos OS Evolved

Nachdem Sie das JET Toolkit für Junos OS Evolved heruntergeladen haben, entpacken Sie die tar-Datei, und extrahieren Sie das Jet-evo Dienstprogramm aus dem Paket.

Hinweis:

Ab Junos OS Evolved Version 23.2R1 und höher können Sie auch das Jet-evo-bundle-iso Dienstprogramm zum Erstellen von gebündelten ISOs extrahieren. Weitere Informationen zu gebündelten ISOs finden Sie unter Erstellen einer gebündelten ISO.

Nachdem Sie das SDK heruntergeladen haben, installieren Sie es, und beziehen Sie es. Das JET SDK für Junos OS Evolved ist ein Debian-Paket, das Sie auf Debian-basierten Linux-Distributionen wie Ubuntu und Debian installieren können. Verwenden Sie den folgenden Linux-Befehl, um das JET SDK für Junos OS Evolved Version 22.4R1 zu installieren:

user@host:~$ dpkg -i jet-junos-evo-sdk-22.4R1.10-EVO.deb

Mit dem Befehl wird das SDK im Ordner /opt/jnpr/sdk/3.0.2-31 installiert. dpkg

Als Nächstes müssen Sie das SDK für Ihr Drittanbieterpaket beschaffen. Verwenden Sie die folgenden Befehle, um das JET SDK für Junos OS Evolved für ein Paket in Junos OS Evolved Version 22.4R1 zu beziehen:

Von SysMan und systemd gesteuerte Anwendungen

Der native Junos OS Evolved-Anwendungsmanager () oder der Linux-Systemmanager (SysMansystemd) können Anwendungen von Drittanbietern steuern. Gesteuerte Anwendungen können die verteilte Infrastruktur von Junos OS Evolved nutzen und auf mehreren Knoten ausgeführt werden. SysMan Verwaltete systemd Anwendungen können nur auf einem einzigen Knoten ausgeführt werden, daher SysMan ist dies in den meisten Fällen der bevorzugte Anwendungsmanager.

SysManund systemd verwaltete Anwendungen verwenden unterschiedliche Methoden, um Richtlinien über Dienstdateien zu definieren. Anwendungen, die über verwaltet werdenSysMan, verwenden .yaml Dateien, um Richtlinien zu definieren und Dienste zuzuweisen. Weitere Informationen finden Sie unter .yaml-Dateien.

Anwendungen, die über definiert Richtlinien verwaltet werden, und weisen Dienste über systemd .service Dateien zu. Weitere Informationen finden Sie unter Servicedateien .

Wenn ein Routing-Engine-Switchover stattfindet, werden verwaltete Anwendungen automatisch auf der neuen primären Routing-Engine gestartet, SysMan verwaltete Anwendungen werden jedoch systemd weiterhin auf der ursprünglichen Routing-Engine ausgeführt. Wir empfehlen, kontrollierte Anwendungen nach Möglichkeit auf dualen Routing-Engine-Systemen zu verwenden SysMan .

Ordnerstruktur für Anwendungen von Drittanbietern

Anwendungspakete von Drittanbietern folgen einer bestimmten Ordnerstruktur in Junos OS Evolved.

root-fs Ordnerstruktur

Der root-fs Ordner enthält die folgenden Ordner:

  • usr/sbin (obligatorisch): Enthält die ausführbare Binärdatei für die Anwendung.

  • usr/lib64 (optional): Enthält die notwendigen Bibliotheken für die Anwendung.

  • etc/sytemd/sytem (optional): Enthält Service-Unit-Dateien systemd für kontrollierte Anwendungen (obligatorisch für systemd systemd verwaltete Anwendungen).

  • usr/conf (optional): Enthält Dateien für die Richtliniengenerierung .yaml (obligatorisch für SysMan verwaltete Anwendungen).

Außerhalb des Ordners root-fs finden Sie die folgenden optionalen Ordner:

  • scripts (optional): Enthält die Skripts für die Vorinstallation, die Nachinstallation und die Vorabdeinstallation.

  • etc/config (optional): Enthält anwendungsspezifische Konfigurationen.

Ordnerstruktur nach der Installation

Nachdem Sie das Drittanbieterpaket installiert haben, werden die Dateien standardmäßig unter den folgenden Pfaden gespeichert:

  • /usr/sbin/: Enthält die ausführbaren Binärdateien für Anwendungen im Paket.

  • /usr/lib64/: Enthält die Bibliotheken für Anwendungen im Paket.

  • /data/var/external//current-evo-version: Enthält Skriptdateien vor der Installation, nach der Installation und vor der Deinstallation sowie .bom, .sh.fs und .ima Dateien für die Anwendungen im Paket.

  • /etc/systemd/system/: Enthält Dateien zum Setzen .service von Anwendungsrichtlinien und angehängten Diensten.

  • /usr/conf/: Enthält .yaml Dateien für SysMan kontrollierte Programme.

Hinweis:

Sie finden die Dateien für Bibliotheken und Binärdateien in read-only Ordnern. Es wird nicht empfohlen, Bibliotheken und Binärdateien in read-write aktivierten Ordnern wie / etc oder /var abzulegen.

Anwendungsdateien von Drittanbietern

Anwendungspakete von Drittanbietern enthalten mehrere Dateitypen. Lesen Sie weiter, um weitere Informationen zu den verschiedenen Dateitypen zu erhalten:

Makefile

Das Makefile ist eine notwendige Datei zum Erstellen und Installieren Ihrer Drittanbieteranwendung. Das Makefile muss die Pfade für andere Dateien wie die SRC-Datei, die Konfigurationsdatei und .yaml die Datei enthalten. Es steuert auch den Installationsort der erforderlichen Dateien.

SRC-Dateien

SRC-Dateien enthalten den Quellcode für Ihre Anwendung. Sie können SRC-Dateien in C, C++ oder Python schreiben. Diese Dateien sind für die Funktion Ihrer Drittanbieteranwendung erforderlich.

Skript-Dateien

Zu den Skriptdateien gehören Skripts vor der Installation, nach der Installation und vor der Deinstallation. Bei diesen optionalen Dateien handelt es sich um Shellskripts, die Sie an die Anforderungen Ihrer Anwendung anpassen können.

  • Vorinstallierte Skripts werden ausgeführt, bevor Sie Ihr Drittanbieterpaket installieren. Diese Skripte werden in der Regel zum Testen und Überprüfen verschiedener Faktoren auf Ihrem Gerät verwendet. Sie können beispielsweise ein Skript vor der Installation erstellen, um die Version von Junos OS Evolved zu überprüfen, die ausgeführt wird, bevor Sie mit der Installation beginnen.

  • Skripts nach der Installation werden nach der Installation des Drittanbieterpakets ausgeführt. Diese Skripts enthalten die Befehle, die nach Abschluss der Installation ausgeführt werden sollen. Erstellen Sie z. B. zusätzliche Protokolldateien oder ein Protokollierungsverzeichnis für Ihr Paket.

  • Skripts vor der Deinstallation werden ausgeführt, bevor Sie Ihr Drittanbieterpaket deinstallieren. Diese Skripts werden in der Regel verwendet, um Ordner und Dateien zu bereinigen, die während der Installation des Drittanbieterpakets erstellt wurden.

Hinweis:

Alle Skripte müssen bei erfolgreicher Ausführung Null und bei Fehlschlag einen Wert ungleich Null zurückgeben.

Skripte können in jedem beliebigen Ordner erstellt werden. Während der Paketerstellung von Drittanbietern mit dem Jet-evo Tool können Sie die Pfade zu jedem Skripttyp eingeben und sie werden im Ordner /data/var/external//current-evo-version auf Ihrem Gerät installiert. Weitere Informationen zum Jet-evo Werkzeug finden Sie unter Jet-evo-Werkzeugkonfiguration.

Hinweis:

Wenn Sie benutzerdefinierte Skripts erstellen, empfehlen wir, keine Befehle zu verwenden bash , die zusätzliche CLI-Ausgaben erstellen. Sie können die CLI-Ausgabe in Ihre eigene Protokolldatei umleiten.

Service-Dateien

Servicedateien sind Pflichtdateien für systemd kontrollierte Anwendungen. Diese Dateien steuern die Anwendungsrichtlinien und bestimmen, auf welchen Knoten und Routing-Engines die Anwendung ausgeführt wird.

Sie müssen die Dienstdateien im Ordner etc/systemd/system/ im root-fs Verzeichnis für Ihr Paket ablegen.

Das folgende Beispiel ist eine Datei für eine .service Anwendung mit dem Namen Sample App. Diese .service Datei definiert den Pfad zum Starten der Anwendung und den Systemstatus, der zum Ausführen der Anwendung erforderlich ist.

Die folgenden Felder sind Pflichtfelder und sollten mit der gleichen Syntax wie die Beispieldatei verwendet werden:

  • Nach

  • Bevor

  • OnFailure (OnFailure)

  • Arbeitsverzeichnis

  • ExecStart

  • ExeStopPost

.yaml-Dateien

.yamlDateien sind Pflichtdateien für SysMan kontrollierte Anwendungen. Diese Dateien werden verwendet, um anwendungsspezifische Richtlinien zu übergeben, die bei der Erstellung von systemd basierten Service Units und basierten Richtlinien während der Installation verwendet werden. Dateien werden auch verwendet, um zu bestimmen, auf welchen Knoten und SysMan Routing-Engines die Anwendung ausgeführt wird. .yaml

Hinweis:

Wenn Sie sowohl Dateien als auch .yaml .service Dateien für dieselbe Anwendung in ein Paket aufnehmen, haben die Dateiattribute Vorrang, und die .service Anwendung wird als gesteuerte sysman Anwendung behandelt.

An Pakete von Drittanbietern können mehr als ein Dienst angehängt sein. Jede Anwendung, die von gesteuert wird, muss über eine separate .yaml Datei für jeden angehängten Dienst verfügen, wobei die Dienstnamen als Dateinamen gelten.yaml. Dateinamen sollten mit den Dienstnamen und nicht mit dem Paketnamen übereinstimmen, da sich Paketnamen von Drittanbietern von SysMan den im Paket enthaltenen Diensten unterscheiden können. .yaml

Sie müssen Dateien innerhalb des usr/conf Ordners im root-fs Verzeichnis für Ihr Paket ablegen.yaml.

Eine .yaml Datei besteht aus mehreren Feldern, die Informationen über die entsprechende Anwendung enthalten. In der folgenden Liste finden Sie Definitionen der .yaml Dateifelder:

binpath

Definiert den Pfad zur ausführbaren Binärdatei.

exec-start

Definiert, wie die Anwendung gestartet wird, einschließlich des Pfads und der Argumente, die zum Starten der Anwendung erforderlich sind. Dieses Feld entspricht dem ExecStart Feld in einer systemd Serviceeinheit.

working-dir

Definiert den Pfad zum übergeordneten Verzeichnis mit Binärdateien.

id

Steuert den Namen der Anwendung. Sollte mit dem .yaml Dateinamen übereinstimmen.

network

Legt den Netzwerktyp mit den Werten internal oder fest external. Anwendungen, die außerhalb des Geräts kommunizieren, sollten den external Wert verwenden.

on-exit

Steuert die Einstellung für den Neustart der Anwendung beim Beenden.

  • restart: Steuert, ob die Anwendung beim Beenden mit true oder false -Werten neu gestartet wird.

resource

Legt die Grenzwerte für die von der Anwendung verwendeten Systemressourcen fest:

  • max-memory: Steuert die maximale Menge an Arbeitsspeicher, die von jeder Instanz der Anwendung verwendet werden darf.

  • node-attribute: Steuert den Typ des Knotens, auf dem die Anwendung ausgeführt wird, mit Werten wie -re und fpc.

    • node-type: Steuern Sie den Typ des Knotens, auf dem die Aktion ausgeführt werden soll, mit Werten wie -re und fpc.

  • startup: Steuert, ob die Anwendung nach der Installation gestartet wird, wenn eine benutzerdefinierte Junos OS Evolved-Konfiguration mit true oder-Werten false vorhanden ist.

  • instances: Steuert die Knoten, auf denen die Anwendung ausgeführt wird, und die maximale Anzahl von Instanzen, die ausgeführt werden können.

    • all_nodes: Steuern, ob die Anwendung auf allen Knoten mit true oder false -Werten ausgeführt wird.

    • max_num_of_instances: Steuern Sie die maximale Anzahl von Instanzen, die eine Anwendung mit einem Zahlenwert ausführen kann.

Die folgende Beispieldatei zeigt die Konfiguration für eine Beispielanwendung .yaml , die auf der primären Routing-Engine mit nur 1 Instanz ausgeführt wird. Durch Festlegen des all_nodes Felds auf false wird verhindert, dass die Anwendung auf allen Routing-Engines ausgeführt wird. Durch Festlegen des max_number_of_instances Felds 1 wird die Anwendung auf 1 Instanz beschränkt. Durch Festlegen des node-attribute Felds auf wird die Anwendung auf -re der Routing-Engine ausgeführt. Wenn mit dieser Konfiguration die primäre Routing-Engine ausfällt, wird die Anwendung automatisch auf der Backup-Routing-Engine gestartet.

Erstellen eines Drittanbieterpakets

Das Jet-evo Tool erstellt Pakete von Drittanbietern mithilfe der vom Anwendungsentwickler erstellten Anwendungen, Binärdateien und Bibliotheken. Der Prozess zum Erstellen eines Drittanbieterpakets unterscheidet sich je nachdem, ob das Paket vom Junos OS Evolved-Prozess SysMan oder vom Linux-Prozess systemd verwaltet wird. Nachfolgend finden Sie weitere Informationen zu den einzelnen Szenarien:

Erstellen eines SysMan verwalteten Pakets

Externe Anwendungen, die von verwaltet werden SysMan , müssen Dateien für die Dienste haben, die an die Anwendung angehängt sind .yaml .

  1. Erstellen und kompilieren Sie die Anwendung mit C, C++ oder Python mithilfe des JET SDK für Junos OS Evolved.
  2. Erstellen Sie die erforderlichen Ordner, wie unter Ordnerstruktur für Anwendungen von Drittanbietern beschrieben.
  3. Bewahren Sie die ausführbare Binärdatei im Ordner usr/sbin/ auf.
  4. Bewahren Sie die Dateien im Ordner usr/conf/ und die .yaml Konfigurationsdateien im Ordner etc/config/ auf.
  5. Führen Sie das Jet-evo Tool mit paketspezifischen Optionen aus. Weitere Informationen zu den Konfigurationsoptionen im Jet-evo Tool finden Sie unter Jet-evo-Tool-Konfiguration.
Hinweis:

Sie können optional Ihre eigene systemd Datei zusammen mit der .yaml Datei packen, wenn Sie komplexe Funktionen verwenden müssen, die systemd nicht in einer .yaml Datei enthalten sein können. Legen Sie die Dienstdatei im Ordner etc/systemd/system / und .yaml die Datei im Ordner usr/conf ab.

Erstellen eines systemd verwalteten Pakets

Externe Anwendungen, die von verwaltet werden systemd , benötigen eine .service Datei für die Dienste, die an die Anwendung angehängt sind.

  1. Erstellen und kompilieren Sie die Anwendung mit C, C++ oder Python mithilfe des JET SDK für Junos OS Evolved.
  2. Erstellen Sie die erforderlichen Ordner, wie unter Ordnerstruktur für Anwendungen von Drittanbietern beschrieben.
  3. Bewahren Sie die ausführbare Binärdatei im Ordner usr/sbin/ auf.
  4. Bewahren Sie die Dienstdatei im Ordner etc/systemd/system/ auf.
  5. Führen Sie das Jet-evo Tool mit paketspezifischen Optionen aus. Weitere Informationen zu den Konfigurationsoptionen im Jet-evo Tool finden Sie unter Jet-evo-Tool-Konfiguration.

Jet-evo Werkzeugkonfiguration

Das Jet-evo Tool wird verwendet, um das Drittanbieterpaket zu benennen, die Versionsnummer festzulegen, Installationsskripts auszuführen und den Installationspfad für das Drittanbieterpaket festzulegen. Diese Variablen werden alle durch Optionen gesteuert, die beim Ausführen des jet-evo Befehls festgelegt werden:

Hinweis:

Unter Generieren von Signaturschlüsseln finden Sie Informationen zum Generieren eines privaten Schlüssels für die Verwendung mit dem Jet-evo Tool.

Erforderliche Argumente

Die folgenden Argumente sind erforderlich:

-n name

Legen Sie den Namen Ihres Drittanbieterpakets fest.

-r root:

Definieren Sie die Stammpfade zu den Anwendungen, die in Ihrem Paket enthalten sind, durch Kommas getrennt.

-v version:

Legen Sie eine Versionsnummer für Ihr Paket fest.

Optionale Argumente

Die folgenden Argumente sind optional:

-h

Zeigt eine Hilfemeldung an, in der die Jet-evo Felder erläutert werden.

-a architecture

Wählen Sie die Architektur aus, auf die Ihr Drittanbieterpaket abzielt.

-n node

Definieren Sie die Knoten, auf die Ihr Drittanbieterpaket abzielt.

-i pre-install

Geben Sie Dateipfade für die Vorinstallation von Skripts an.

-p post-install

Geben Sie Dateipfade für Skripts nach der Installation an.

-u pre-uninstall

Geben Sie Dateipfade für Skripts vor der Deinstallation an.

-d directory

Legen Sie das Zielverzeichnis für die Installation Ihres Pakets fest.

-x

Entfernt alle Debug-Dateien aus dem Paket.

-t

Erstellen Sie eine TAR-Datei mit der gesamten Ausgabe des Jet-evo Tools.

-l name

Legen Sie den Namen und den Pfad der Packager-Protokolldatei fest.

-k key

Privater Schlüssel, der zum Signieren des Drittanbieterpakets verwendet wird.

Beispielsyntax

Im Folgenden finden Sie ein Beispiel für die Syntax für den jet-evo Befehl unter Verwendung eines Pakets mit dem Namen sample_package Version 1.0.1:

Installieren eines Drittanbieterpakets

Nachdem Sie ein Anwendungspaket eines Drittanbieters erstellt oder erhalten haben, können Sie es auf einem Junos OS Evolved-Gerät installieren. Ein Paket kann mehrere Anwendungen zusammen installieren. Der Installationsvorgang überschreibt alle zuvor installierten Anwendungen, die im Paket vorhanden sind. Es wird empfohlen, Anwendungen in Paketen für verschiedene Pakete eindeutig zu halten.

Bevor Sie eine Anwendung eines Drittanbieters installieren, müssen Sie zunächst die entsprechenden Signaturschlüssel und Zertifikate auf allen REs installieren. Die Installation schlägt fehl, wenn die Signaturschlüssel nicht ordnungsgemäß generiert werden. Weitere Informationen finden Sie unter Generieren von Signaturschlüsseln .

Sie können installierte Schlüssel anzeigen, indem Sie den show security integrity extended-keyring Befehl verwenden.

Mit dem request system software add package-name Befehl können Sie Pakete von Drittanbietern installieren. Zum Beispiel:

request system software add sample_package.1.0.1.tgz

Hinweis:

Pakete von Drittanbietern können nur über die Master-Routing-Engine installiert werden.

Nach erfolgreicher Installation eines Drittanbieterpakets werden beim Installationsvorgang alle zugehörigen Dateien in den /data/var/external/current-evo-version/ Ordner kopiert. In show version der Ausgabe werden alle Drittanbieterpakete auf jeder Routing-Engine für eine bestimmte Softwareversion im External Software Feld angezeigt:

Um alle auf Ihrem Gerät installierten Versionen von Junos OS Evolved sowie die für die aktuelle Version installierten Drittanbieterpakete auf jedem Knoten und jeder Routing-Engine anzuzeigen, können Sie den show software list folgenden Befehl verwenden: