Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Entwicklung von On-Device-JET-Anwendungen

Übersicht

JET-Anwendungen, die in den Sprachen C, C++ und Python geschrieben wurden, können auf dem Gerät ausgeführt werden. Sie können die Anwendungen in der heruntergeladenen JET-VM entwickeln und diese Anwendungen dann auf dem Gerät bereitstellen, auf dem Junos OS ausgeführt wird. Sie können JET-Anwendungen auf dem Gerät signieren, um zu zeigen, dass sie vertrauenswürdig sind.

Hinweis:

Das End-of-Life- und End-of-Support-Datum von Python 2.7 ist der 1. Januar 2020. Der offizielle Upgrade-Pfad für Python 2.7 führt zu Python 3. Da die Unterstützung für Python 3 auf Geräten mit Junos OS für die verschiedenen Arten von On-Device-Skripts hinzugefügt wird, empfehlen wir, die unterstützten Skripttypen von Python 2 auf Python 3 zu migrieren.

Ab Junos OS Version 21.1R1 und Junos OS Evolved Version 22.3R1 wird Python 2.7 nicht mehr unterstützt und die set system scripts language python Anweisung ist veraltet. Verwenden Sie stattdessen die set system scripts language python3 Anweisung.

Abbildung 1 zeigt den Workflow für die Anwendungsentwicklung für nicht signierte und signierte JET-Anwendungen auf dem Gerät.

Abbildung 1: On-Device JET-Anwendungs-Workflow On-Device JET Application Workflow

Entwicklung von nicht signierten JET-Anwendungen

Unsignierte JET-Anwendungen können nur in Python geschrieben werden.

So entwickeln Sie eine nicht signierte JET-Anwendung:

  1. (Optional) Laden Sie die JET-VM herunter, und richten Sie sie ein. Weitere Informationen finden Sie unter Einrichten der JET-VM.

  2. Entwickeln Sie Ihre Anwendung in Python.

  3. Verpacken Sie Ihre Anwendung. Weitere Informationen finden Sie unter Paket-JET-Anwendungen.

  4. Konfigurieren Sie die language Anweisung auf dem Junos-Gerät. So verwenden Sie beispielsweise Python 3 zum Ausführen eines JET-Skripts, das Python 3 unterstützt:

    Weitere Informationen finden Sie unter Grundlegendes zu Python-Automatisierungsskripts für Geräte mit Junos OS .

  5. Führen Sie die Anwendung auf einem Gerät mit Junos OS aus.

Entwickeln von signierten JET-Anwendungen

Sie können signierte Anwendungen in C, C++ oder Python entwickeln.

So entwickeln Sie eine signierte Anwendung:

  1. Laden Sie die benötigten Pakete herunter, und richten Sie die JET-VM ein. Weitere Informationen finden Sie unter Einrichten der JET-VM.

  2. Fordern Sie ein Signaturzertifikat an. Weitere Informationen finden Sie unter Anfordern eines Signaturzertifikats.

  3. Entwickeln Sie die Anwendung.

  4. Konfigurieren Sie die Lizenz, wenn Ihre Anwendung in C oder C++ geschrieben ist. Dieser Schritt ist für Anwendungen, die in Python geschrieben wurden, optional. Weitere Informationen finden Sie unter Konfigurieren der JET-Anwendung und ihrer Lizenz auf einem Gerät mit Junos OS .

  5. Erstellen Sie das Paket, und signieren Sie das Paket mit dem erworbenen Zertifikat.

  6. Stellen Sie die Anwendung auf einem Gerät bereit, auf dem Junos OS ausgeführt wird.

Anfordern eines Signaturzertifikats

Zum Entwickeln und Verteilen von JET-Anwendungen müssen Sie ein Paketsignaturzertifikat auf der JET-VM installieren, indem Sie das Zertifikatanforderungsskript ausführen. Dieses Skript unterstützt Sie bei der Erstellung eines Signaturschlüssels und einer Zertifikatsanforderung für die Verwendung mit JET.

VORSICHT:

Geben Sie den Signaturschlüssel niemals an Dritte weiter, auch nicht an Juniper Networks. Der Schlüssel ermöglicht es jedem, Anwendungen zu signieren, denen Ihr Router vertraut. Behandeln Sie daher den Schlüssel mit dem gleichen Sicherheitsniveau wie das Root-Passwort für die Router. Nachdem Sie Ihren Signaturschlüssel erhalten haben, speichern Sie ihn in einer Datei außerhalb der VM.

Das Zertifikatanforderungsskript fragt nach den folgenden Informationen:

  • Stadt, Bundesland und Land.

  • Ihre Organisation und Einheit. Die Organisation sollte nicht vage sein. Es dürfen keine Bindestriche ("-") vorhanden sein.

  • Zertifikatstyp: Geben Sie an, ob es sich um ein kommerzielles oder privates Zertifikat handelt. Unternehmen, die nicht zu Juniper gehören, müssen kommerzielle verwenden. Private Zertifikate werden nur zugewiesen, wenn es sich bei der Organisation um Juniper handelt.

  • Anbieterpräfix: Hierbei handelt es sich um den eindeutigen Anbieternamen, den Juniper jedem JET-Partner zuweist.

  • Benutzerzeichenfolge: Dies ist eine zusätzliche Spezifikation Ihrer Wahl. Dabei kann es sich um eine Zeichenfolge handeln, die den Namen des Entwicklungsteams oder Projekts angibt. Die Benutzerzeichenfolge kann aus einem Kleinbuchstaben gefolgt von einem oder mehreren Kleinbuchstaben oder Zahlen bestehen (z. B. teamjet2).

  • Bereitstellungsbereich: Der Bereitstellungsbereich ist die Zeichenfolge, die von Juniper zugewiesen wird, um mehrere Zertifikate für denselben JET-Partner zu unterscheiden. Damit wird die Gültigkeitsdauer für das generierte Zertifikat festgelegt. Der Umfang kann kommerziell oder Evaluierung sein. Wenn Ihnen keine zugewiesen ist, lassen Sie sie leer.

  • Indexnummer: Diese Nummer wird als Zertifikatsgenerationsnummer bezeichnet. Es wird 1 für Ihr erstes Zertifikat sein. Wenn ein Zertifikat abläuft und Sie ein neues Zertifikat anfordern, wird diese Anzahl erhöht.

  • E-Mail-Adresse: Die E-Mail-Adresse für den Zertifikatskontakt wird in das Zertifikat eingebettet. Es wird empfohlen, die E-Mail-Adresse einer Abteilung oder Einheit in Ihrer Organisation zu verwenden. Wir empfehlen Ihnen, keine persönliche E-Mail-Adresse zu verwenden.

Um eine signierte Anwendung zu erstellen, fordern Sie Zertifikate an, und kopieren Sie sie, wie im folgenden Verfahren beschrieben. Dieses Verfahren ist optional, wenn Sie eine nicht signierte Anwendung erstellen möchten.

So fordern Sie manuell ein Zertifikat an:

  1. Erstellen Sie das Verzeichnis / usr/local/junos-jet/certs, falls es noch nicht auf Ihrem Gerät vorhanden ist.

  2. Führen Sie den jet-certificate-request Befehl in einem VM-Terminal aus.

  3. Das Skript führt Sie durch eine Reihe von Fragen. Beantworten Sie die Fragen und drücken Sie nach jeder Antwort die Eingabetaste. Weitere Informationen finden Sie in den Anforderungen für die einzelnen oben aufgeführten Antworten.

  4. Basierend auf Ihren Antworten generiert das Skript zwei Dateien im Verzeichnis / usr/local/junos-jet/certs: certname_key.pem und certname_req.pem. Das certname ist der Name des Zertifikats.

    Der Zertifikatname muss das Format ORGANIZATION-USER-TYPE-NUMBER aufweisen. Alle vier Parameter sind obligatorisch, sonst wird der folgende Fehler angezeigt:

  5. Speichern Sie die certnameDatei _key.pem außerhalb der VM. Dies ist Ihr Signaturschlüssel. Stellen Sie sicher, dass niemand außerhalb Ihrer Entwicklungsorganisation Zugriff darauf hat. Geben Sie den Signaturschlüssel niemals an Dritte weiter, auch nicht an Juniper Networks.

    Der Schlüssel ermöglicht es jedem, Anwendungen zu signieren, denen Ihr Router vertraut. Behandeln Sie daher den Schlüssel mit dem gleichen Sicherheitsniveau wie das Root-Passwort für die Router.

  6. Senden Sie die certnameDatei _req.pem an JET Certificate Processing at mailto:jet-cert@juniper.net. Diese Datei enthält Ihre Zertifikatsanforderung. Der Antragsteller sollte berechtigt sein, Signaturzertifikate im Namen seiner Organisation anzufordern. JET Certificate Processing sendet Ihnen Ihr Zertifikat umgehend zu.

  7. Wenn Sie Ihr Zertifikat erhalten haben, speichern Sie es unter certname und kopieren Sie es in das Verzeichnis / usr/local/junos-jet/certs .

  8. Vergewissern Sie sich, dass das Zertifikat und der Signaturschlüssel im Verzeichnis / usr/local/junos-jet/certs verfügbar sind.

Kompilieren von 64-Bit-Anwendungen

JET unterstützt 64-Bit-Anwendungen für Junos OS mit FreeBSD und Junos OS mit aktualisiertem FreeBSD. Wenn Sie bereit sind, Ihre Anwendung zu packen, verwenden Sie die folgenden Befehle, um 64-Bit-Anwendungen für die Verwendung mit der AMD64- oder ARM64-64-Bit-Prozessorarchitektur zu kompilieren.

Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit AMD64 und Junos OS unter FreeBSD zu kompilieren:

  1. Vergewissern Sie sich, dass Sie über die GCC-Toolchain verfügen, die im JET-Paket enthalten sein sollte.

  2. Verwenden Sie den Befehl mk-amd64 application name , um das Anwendungspaket zu erstellen.

Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit AMD64 und Junos OS mit aktualisiertem FreeBSD zu kompilieren:

  1. Überprüfen Sie, ob Sie die Clang-Toolchain haben, die im JET-Paket enthalten sein sollte.

  2. Verwenden Sie den Befehl mk-amd64,bsdx application name , um das Anwendungspaket zu erstellen.

Gehen Sie wie folgt vor, um die Anwendung für die Verwendung mit ARM64 und Junos OS mit aktualisiertem FreeBSD zu kompilieren:

  1. Überprüfen Sie, ob Sie die Clang-Toolchain haben, die im JET-Paket enthalten sein sollte.

  2. Verwenden Sie den Befehl mk-arm64,bsdx application name , um das Anwendungspaket zu erstellen.

Beispiel: Entwickeln eines signierten C-Pakets

Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um C-Anwendungen echoclient und echoserver zu erstellen.

  1. Sehen Sie sich die Sandbox an. Eine Sandbox ist ein Build-Baum mit einer kleinen Umgebungsdatei namens . sandbox-env an der Spitze, die von einem Wrapper-Skript mk verwendet wird, um sicherzustellen, dass die Build-Umgebung ordnungsgemäß konditioniert ist.
    Hinweis:

    Der echo client ist eine Demo-Anwendung. Im Verzeichnis bin/ sind alle erforderlichen Konfigurations- und Build-bezogenen Dateien zusammen mit der Quelldatei für den Echo-Client in der Sandbox verfügbar.

  2. Erstellen Sie ein Echo-Clientpaket.
    Hinweis:

    Wenn Sie Ihre JET-Anwendung ab Junos OS Version 20.2R1 auf einem ACX710-Gerät ausführen, können Sie die Clang-Toolchain für die ARM-basierte Kompilierung von JET-Anwendungen verwenden, die in C, Python oder Ruby geschrieben wurden. Verwenden Sie stattdessen den Befehl mk-arm,bsdx anstelle der mk-i386,bsdx Clang-Toolkette, um Ihre Anwendung zu kompilieren.

  3. Kopieren Sie das Echo-Client-Paket auf das Gerät, auf dem Junos OS ausgeführt wird.
  4. Wechseln Sie auf dem Junos-Gerät in den Konfigurationsmodus.
  5. Installieren Sie das echo-Clientpaket.

    Vergewissern Sie sich, dass die Installation erfolgreich war.

  6. Sehen Sie sich die Echo-Server-Sandbox an.
  7. Erstellen Sie das echo server-Paket.
  8. Kopieren Sie das Echoserverpaket auf die Junos-VM.
  9. Fügen Sie dem Junos-Gerät das Echo Server-Paket hinzu.
  10. Überprüfen Sie, ob die Pakete erfolgreich hinzugefügt wurden.
  11. Konfigurieren Sie die ID des Echo-Servers, den Lizenztyp und den Bereitstellungsbereich auf dem Junos-Gerät. Verwenden Sie dieselbe Anbieterlizenz, die Sie zum Packen verwendet haben.
  12. Konfigurieren Sie den Echo-Server auf dem Junos-Gerät.
  13. Konfigurieren Sie die Anbieter-ID, den Lizenztyp und den Bereitstellungsumfang des Echo-Clients auf dem Junos-Gerät. Verwenden Sie dieselbe Anbieterlizenz, die Sie zum Packen verwendet haben.
  14. Konfigurieren Sie die Echo-Clientanwendung auf dem Junos-Gerät.
  15. Führen Sie die echo-Clientanwendung aus.

Beispiel: Entwickeln eines signierten Python-Pakets ohne C-Abhängigkeiten

Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um ein signiertes Python-Paket ohne C-Abhängigkeiten zu entwickeln.

  1. Wechseln Sie in der VM zum Verzeichnis /home/user.
  2. Erstellen Sie eine Sandbox mit dem mksb Befehl, wobei SamplePyApp der Name der Sandbox ist. Eine Sandbox ist ein Build-Baum mit einer kleinen Umgebungsdatei namens . sandbox-env an der Spitze, die von einem Wrapper-Skript mk verwendet wird, um sicherzustellen, dass die Build-Umgebung ordnungsgemäß konditioniert ist.
  3. Erstellen Sie Unterverzeichnisse in der Sandbox.

    Verwenden Sie zunächst den workon Befehl, um in Ihre Sandbox zu wechseln. Der workon Befehl führt Sie direkt in das Verzeichnis $SB/src und legt die Sandbox korrekt fest.

    Alternativ können cd Sie auch in das Verzeichnis src Ihrer Sandbox zugreifen.

    Erstellen Sie als Nächstes Unterverzeichnisse für Anwendungscode in $SB/src/python, $SB/src/lib oder $SB/src/bin, je nachdem, ob Sie Python-, Bibliotheks- oder bin-Dateien (ausführbare Dateien) benötigen.

  4. Entwickeln Sie den Code.

    Wenn Sie Ihre Anwendung mit Python 3 schreiben, fügen Sie das Schlüsselwort PASS in den Exception-Block des Skripts ein.

  5. Schreiben Sie eine JSON-Datei für die Anwendung, um die Anwendung zu packen.

    Weitere Informationen finden Sie unterPaketieren von JET-Anwendungen .

  6. Fügen Sie den Pfad zu jet-pkg-gen.py Ihrer .bashrc-Datei hinzu.
  7. Generieren Sie automatisch die entsprechenden Makefiles, indem Sie den jet-pkg-gen.py Befehl ausführen. Der jet-pkg-gen.py Befehl akzeptiert zwei Optionen:
    • Auf die -i Option folgen der Pfad und der Dateiname der JSON-Datei.

    • Auf die -p Option folgt der Pfad zum Verzeichnis src der Sandbox.

    Wenn der Sandbox-Name beispielsweise SamplePyApp lautet:

    Hinweis:

    Das automatisch generierte Anwendungs-Makefile wird in den meisten Fällen korrekt sein. Wenn externe Bibliotheksabhängigkeiten vorhanden sind, passen Sie das Makefile entsprechend an.

  8. Erstellen Sie das gesamte Paket.

    Kehren Sie zunächst zum Verzeichnis src ($SB/src) zurück. Führen Sie als Nächstes den mk-i386 SamplePyApp Befehl where SamplePyApp where the from the "app-name" JSON-Datei in Schritt 5 aus.

    Hinweis:

    Wenn Sie Ihre JET-Anwendung ab Junos OS Version 20.2R1 auf einem ACX710-Gerät ausführen, können Sie die Clang-Toolchain für die ARM-basierte Kompilierung von JET-Anwendungen verwenden, die in C, Python oder Ruby geschrieben wurden. Verwenden Sie stattdessen den Befehl mk-arm,bsdx anstelle der mk-i386,bsdx Clang-Toolkette, um Ihre Anwendung zu kompilieren.

  9. Kopieren Sie das Paket auf ein Gerät, auf dem Junos OS ausgeführt wird.

Konfigurieren Sie nun das Junos-Gerät, und installieren Sie das Paket.

  1. Wechseln Sie in den Konfigurationsmodus.

  2. Konfigurieren Sie bei Bedarf die ID des Anwendungsanbieters, den Lizenztyp und den Bereitstellungsumfang auf dem Junos-Gerät. Verwenden Sie dieselbe Anbieterlizenz, die Sie zum Packen verwendet haben.

    Weitere Informationen finden Sie unter Konfigurieren der JET-Anwendung und ihrer Lizenz auf einem Gerät mit Junos OS.

  3. Beenden Sie den Betriebsmodus, und installieren Sie das kopierte Paket auf dem Junos-Gerät.

    Hinweis:

    Dieser Schritt schlägt fehl, wenn providers er nicht konfiguriert ist.

  4. Vergewissern Sie sich, dass das Paket erfolgreich installiert wurde.

  5. Wechseln Sie in den Konfigurationsmodus.

  6. Konfigurieren Sie die Befehlszeilenargumente über die Junos OS CLI. Wenn ein Python-JET-Skript im Verzeichnis /var/ db/scripts/jet/ auf einem Gerät mit Junos OS verfügbar ist, können Sie Befehlszeilenargumente für die Datei konfigurieren und die Argumente über die Junos CLI angeben.

    Hier sind die Argumente in der Anwendung.

    Konfigurieren Sie die Befehlszeilenargumente in der CLI. In diesem Beispiel lautet cmdline_args.pyder Dateiname des Skripts .

  7. Bestätigen Sie die Konfiguration und beenden Sie den Betriebsmodus.

  8. Führen Sie die Anwendung aus.

Beispiel: Entwickeln eines signierten Python-Pakets mit C-Abhängigkeiten

Nachdem Sie die JET-VM eingerichtet und eine Signaturzertifizierung erworben haben, können Sie die Entwicklungssandbox in der VM erstellen und mit der Entwicklung Ihrer signierten Anwendung auf dem Gerät beginnen. Verwenden Sie dieses Beispiel, um ein signiertes Python-Paket mit C-Abhängigkeiten zu entwickeln.

  1. Sehen Sie sich die Sandbox an.
  2. Erstellen Sie ein Anwendungsverzeichnis im Python-Unterverzeichnis.
  3. Ein Bitarray ist ein Beispiel für ein relativ einfaches Python-Modul mit einer C-Abhängigkeit. Laden Sie das Bitarray aus https://pypi.org/project/bitarray/ herunter und extrahieren Sie es in das Python-Anwendungsverzeichnis.

    Dies ist ein Beispiel für eine einfache Python-Anwendung, die ein bitarray-Modul verwendet:

    Wenn Sie Ihre Anwendung mit Python 3 schreiben, fügen Sie das Schlüsselwort PASS in den Exception-Block des Skripts ein.

  4. Erstellen Sie die JSON-Konfigurationsdatei, die auf die externen Quelldateien verweist. Weitere Informationen finden Sie unter Paketieren von JET-Anwendungen .
  5. Führen Sie den folgenden Befehl aus, um die erforderlichen Makefiles und die Manifestdatei zu erstellen, in der sich die Dateien bei der Installation des Pakets auf dem Junos-Gerät befinden.
  6. Um das bitarray-Modul auf einem Junos-Gerät zu finden, fügen Sie den Pfad /PyAppC/ für die Datei __init__.py und den Verzeichnispfad bitarray/ für die Datei _bitarray.so hinzu.
  7. Erstellen und verpacken Sie die Anwendung.
    Hinweis:

    Wenn Sie Ihre JET-Anwendung ab Junos OS Version 20.2R1 auf einem ACX710-Gerät ausführen, können Sie die Clang-Toolchain für die ARM-basierte Kompilierung von JET-Anwendungen verwenden, die in C, Python oder Ruby geschrieben wurden. Verwenden Sie stattdessen den Befehl mk-arm,bsdx anstelle der mk-i386,bsdx Clang-Toolkette, um Ihre Anwendung zu kompilieren.

  8. Kopieren Sie das erstellte Paket auf das Gerät, auf dem Junos OS ausgeführt wird.
  9. Konfigurieren Sie bei Bedarf die ID des Anwendungsanbieters, den Lizenztyp und den Bereitstellungsumfang auf dem Junos-Gerät. Verwenden Sie dieselbe Anbieterlizenz, die Sie zum Packen verwendet haben.
  10. Installieren Sie das Paket auf dem Gerät, auf dem Junos OS ausgeführt wird.

    Sobald das Paket erfolgreich installiert wurde, werden das abhängige Python-Modul und die gemeinsam genutzte C-Bibliothek auf dem Gerät im standardmäßigen Python-Modulpfad installiert, wie in der Manifestdatei angegeben.

  11. Fügen Sie die Anwendung im Konfigurationsmodus hinzu.
  12. Führen Sie die Anwendung aus
Tabelle der Versionshistorie
Release
Beschreibung
20.2R1
Wenn Sie Ihre JET-Anwendung ab Junos OS Version 20.2R1 auf einem ACX710-Gerät ausführen, können Sie die Clang-Toolchain für die ARM-basierte Kompilierung von JET-Anwendungen verwenden, die in C, Python oder Ruby geschrieben wurden.