Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Développer des applications JET sur l’équipement

Aperçu

Les applications JET écrites en langageS C, C++ et Python peuvent être exécutées sur l’équipement. Vous pouvez développer les applications dans la VM JET téléchargée, puis les déployer sur l’équipement exécutant Junos OS. Vous pouvez signer des applications JET sur l’équipement pour montrer qu’elles peuvent être fiables.

Note:

La date de fin de vie et de fin de support de Python 2.7 est le 1er janvier 2020. Le chemin officiel de mise à niveau pour Python 2.7 est vers Python 3. Comme la prise en charge de Python 3 est ajoutée aux équipements exécutant Junos OS pour les différents types de scripts sur l’équipement, nous vous recommandons de migrer les types de scripts pris en charge de Python 2 vers Python 3.

À partir de Junos OS version 21.1R1 et Junos OS Evolved version 22.3R1, Python 2.7 n’est plus pris en charge et l’instruction set system scripts language python est obsolète. Utilisez l’instruction à la set system scripts language python3 place.

La figure 1 montre le workflow de développement d’applications pour les applications JET non signées et sur l’équipement.

Figure 1 : Flux de travail de l’application JET sur l’équipement On-Device JET Application Workflow

Développer des applications JET non signées

Les applications JET non signées ne peuvent être écrites qu’en Python.

Pour développer une application JET non signée :

  1. (Facultatif) Téléchargez et configurez la VM JET. Voir Configurer la VM JET.

  2. Développez votre application en Python.

  3. Emballez votre application. Voir le package des applications JET.

  4. Configurez l’instruction language sur l’équipement Junos. Par exemple, pour utiliser Python 3 pour exécuter un script JET prenant en charge Python 3 :

    Voir Comprendre les scripts d’automatisation Python pour les équipements exécutant Junos OS pour plus d’informations.

  5. Exécutez l’application sur un équipement fonctionnant sous Junos OS.

Développer des applications JET signées

Vous pouvez développer des applications signées en C, C++ ou Python.

Pour développer une application signée :

  1. Téléchargez les packages dont vous avez besoin et configurez la VM JET. Voir Configurer la VM JET.

  2. Demandez un certificat de signature. Voir Demander un certificat de signature.

  3. Développez l’application.

  4. Configurez la licence si votre application est écrite en C ou C++. Cette étape est facultative pour les applications écrites en Python. Pour plus de détails, voir Configuration de l’application JET et de sa licence sur un équipement exécutant Junos OS .

  5. Créez le package et signez le package à l’aide du certificat acquis.

  6. Déployez l’application sur un équipement exécutant Junos OS.

Demander un certificat de signature

Pour développer et distribuer des applications JET, vous devez installer un certificat de signature de package sur la VM JET en exécutant le script de demande de certificat. Ce script vous aide à créer une clé de signature et une demande de certificat à utiliser avec JET.

ATTENTION:

Ne partagez jamais la clé de signature avec qui que ce soit, y compris Juniper Networks. La clé permet à n’importe qui de signer des applications en qui votre routeur fera confiance. Par conséquent, traitez la clé avec le même niveau de sécurité que le mot de passe racine des routeurs. Une fois que vous avez obtenu votre clé de signature, enregistrez-la dans un fichier en dehors de la VM.

Le script de demande de certificat demande les informations suivantes :

  • Ville, état et pays.

  • Votre organisation et votre unité. L’organisation ne doit pas être vague. Il ne peut pas y avoir de traits d’union (« - »).

  • Type de certificat : spécifiez si le certificat est commercial ou privé. Les entités non-Juniper doivent utiliser des services commerciaux. Les certificats privés ne sont attribués que lorsque l’organisation est Juniper.

  • Préfixe fournisseur : il s’agit du nom unique attribué par Juniper à chaque partenaire JET.

  • Chaîne utilisateur : il s’agit d’une spécification supplémentaire de votre choix. Il peut s’agir d’une chaîne spécifiant l’équipe de développement ou le nom du projet. La chaîne utilisateur peut être composée d’une lettre minuscule suivie d’une ou plusieurs minuscules ou chiffres (par exemple, teamjet2).

  • Portée du déploiement : l’étendue du déploiement est la chaîne attribuée par Juniper pour différencier plusieurs certificats pour le même partenaire JET. Cela définit la période de validité du certificat généré. Le champ d’application peut être commercial ou d’évaluation. Si aucun ne vous est assigné, laissez-le vide.

  • Numéro d’index : ce numéro est connu sous le nom de numéro de génération de certificat. Il sera 1 pour votre certificat initial. Lorsqu’un certificat expire et que vous en demandez un nouveau, ce numéro est incrémenté.

  • Adresse e-mail : l’adresse e-mail du contact du certificat sera intégrée au certificat. Nous vous recommandons d’utiliser l’adresse e-mail d’un département ou d’une unité de votre organisation. Nous vous recommandons de ne pas utiliser d’adresse e-mail personnelle.

Pour créer une application signée, demandez des certificats et copiez-les comme expliqué dans la procédure suivante. Cette procédure est facultative si vous souhaitez créer une application non signée.

Pour demander manuellement un certificat :

  1. Créez le répertoire /usr/local/junos-jet/certs s’il n’existe pas déjà sur votre équipement.

  2. Dans un terminal vm, exécutez la jet-certificate-request commande.

  3. Le script vous amène à répondre à une série de questions. Répondez aux questions et appuyez sur Entrée après chaque réponse. Consultez les exigences pour chaque réponse ci-dessus.

  4. En fonction de vos réponses, le script génère deux fichiers dans le répertoire /usr/local/junos-jet/certs : certname_key.pem et certname_req.pem. C’est certname le nom du certificat.

    Le nom du certificat doit suivre le format ORGANISATION-UTILISATEUR-TYPE-NUMBER. Les quatre paramètres sont obligatoires, sinon vous verrez l’erreur suivante :

  5. Enregistrez le certnamefichier _key.pem en dehors de la VM. C’est votre clé de signature. Assurez-vous que personne en dehors de votre organisation de développement n’y ait accès. Ne partagez jamais la clé de signature avec qui que ce soit, y compris Juniper Networks.

    La clé permet à n’importe qui de signer des applications en qui votre routeur fera confiance. Par conséquent, traitez la clé avec le même niveau de sécurité que le mot de passe racine des routeurs.

  6. Envoyez le certnamefichier _req.pem à JET Certificate Processing à l’adresse mailto:jet-cert@juniper.net. Ce fichier contient votre demande de certificat. Le demandeur doit être autorisé à demander des certificats de signature au nom de son organisation. Le traitement des certificats JET vous enverra immédiatement votre certificat.

  7. Lorsque vous recevez votre certificat, enregistrez-le et copiez-le dans le répertoire /usr/local/junos-jet/certs.certname

  8. Vérifiez que le certificat et la clé de signature sont disponibles dans le répertoire /usr/local/junos-jet/certs .

Compiler des applications 64 bits

JET prend en charge les applications 64 bits pour Junos OS avec FreeBSD et Junos OS avec FreeBSD mis à niveau. Lorsque vous êtes prêt à emballer votre application, utilisez les commandes suivantes pour compiler des applications 64 bits à utiliser avec l’architecture de processeur AMD64 ou ARM64 64 bits.

Pour compiler l’application à utiliser avec AMD64 et Junos OS avec FreeBSD :

  1. Vérifiez que vous disposez de la chaîne d’outils GCC, qui doit être incluse dans le package JET.

  2. Utilisez la commande mk-amd64 application name pour créer le package d’application.

Pour compiler l’application à utiliser avec AMD64 et Junos OS avec FreeBSD mis à niveau :

  1. Vérifiez que vous disposez de la chaîne d’outils Clang, qui doit être incluse dans le package JET.

  2. Utilisez la commande mk-amd64,bsdx application name pour créer le package d’application.

Pour compiler l’application à utiliser avec ARM64 et Junos OS avec FreeBSD mis à niveau :

  1. Vérifiez que vous disposez de la chaîne d’outils Clang, qui doit être incluse dans le package JET.

  2. Utilisez la commande mk-arm64,bsdx application name pour créer le package d’application.

Exemple : développer un package C signé

Une fois que vous avez configuré la VM JET et obtenu une certification de signature, vous êtes prêt à créer le sandbox de développement dans la VM et à commencer à développer votre application signée sur l’équipement. Utilisez cet exemple pour créer des applications C echoclient et echoserver.

  1. Découvrez le sandbox. Un sandbox est un arbre de construction avec un petit fichier d’environnement appelé .sandbox-env en haut qui est utilisé par un script mk de wrapper pour s’assurer que l’environnement de construction est correctement conditionné.
    Note:

    Le client echo est une application de démonstration. Dans le répertoire bin/ , tous les fichiers de configuration et de construction nécessaires sont disponibles dans le sandbox, ainsi que le fichier source pour le client Echo.

  2. Créez un package client d’écho.
    Note:

    À partir de la version 20.2R1 de Junos OS, si vous devez exécuter votre application JET sur un équipement ACX710, vous pouvez utiliser la chaîne d’outils Clang pour la compilation basée sur ARM des applications JET écrites en C, Python ou Ruby. Utilisez la commande mk-arm,bsdx au lieu d’utiliser la chaîne d’outils mk-i386,bsdx Clang pour compiler votre application.

  3. Copiez le package du client d’écho sur l’équipement fonctionnant sous Junos OS.
  4. Passez en mode de configuration sur l’équipement Junos.
  5. Installez le package client d’écho.

    Vérifiez qu’il a bien été installé.

  6. Découvrez le sandbox du serveur d’écho.
  7. Créez le package de serveur d’écho.
  8. Copiez le package de serveur d’écho sur la VM Junos.
  9. Ajoutez le package de serveur d’écho à l’équipement Junos.
  10. Vérifiez que les packages ont bien été ajoutés.
  11. Configurez l’ID du fournisseur du serveur d’écho, le type de licence et l’étendue du déploiement sur l’équipement Junos. Utilisez la même licence fournisseur que celle que vous avez utilisée pour la packager.
  12. Configurez le serveur d’écho sur l’équipement Junos.
  13. Configurez l’ID du fournisseur du client d’écho, le type de licence et l’étendue du déploiement sur l’équipement Junos. Utilisez la même licence fournisseur que celle que vous avez utilisée pour la packager.
  14. Configurez l’application cliente d’écho sur l’équipement Junos.
  15. Exécutez l’application cliente d’écho.

Exemple : développer un package Python signé sans dépendances C

Une fois que vous avez configuré la VM JET et obtenu une certification de signature, vous êtes prêt à créer le sandbox de développement dans la VM et à commencer à développer votre application signée sur l’équipement. Utilisez cet exemple pour développer un package Python signé sans dépendances C.

  1. Dans la VM, accédez au répertoire /home/user.
  2. Créez un sandbox à l’aide de la mksb commande, où SamplePyApp est le nom du sandbox. Un sandbox est un arbre de construction avec un petit fichier d’environnement appelé .sandbox-env en haut qui est utilisé par un script mk de wrapper pour s’assurer que l’environnement de construction est correctement conditionné.
  3. Créez des sous-répertoires dans le sandbox.

    Tout d’abord, utilisez la workon commande pour accéder à votre sandbox. La workon commande vous emmène directement dans le répertoire $SB/src et définit correctement le sandbox.

    Vous pouvez cd également vous rendre dans le répertoire src de votre sandbox.

    Ensuite, créez des sous-répertoires pour le code d’application dans $SB/src/python, $SB/src/lib ou $SB/src/bin, selon que vous avez besoin de fichiers Python, bibliothèque ou bin (exécutables).

  4. Développez le code.

    Si vous écrivez votre application à l’aide de Python 3, incluez le mot-clé PASS dans le bloc d’exception du script.

  5. Écrivez un fichier JSON d’application pour packager l’application.

    Voirpackage d’applications JET pour plus d’informations.

  6. Ajoutez le chemin vers jet-pkg-gen.py à votre fichier .bashrc .
  7. Autogénez les fichiers makefiles appropriés en exécutant la jet-pkg-gen.py commande. La jet-pkg-gen.py commande prend deux options :
    • L’option -i est suivie du chemin et du nom du fichier JSON.

    • L’option -p est suivie par le chemin vers le répertoire src du sandbox.

    Par exemple, si le nom du sandbox est SamplePyApp :

    Note:

    Le makefile d’application généré automatiquement sera correct dans la plupart des cas. S’il existe des dépendances de bibliothèque externes, ajustez le makefile en conséquence.

  8. Créez l’ensemble du package.

    Tout d’abord, revenez au répertoire src ($SB/src). Ensuite, exécutez la mk-i386 SamplePyApp commande, où SamplePyApp se trouve le "app-name" fichier JSON à l’étape 5.

    Note:

    À partir de la version 20.2R1 de Junos OS, si vous devez exécuter votre application JET sur un équipement ACX710, vous pouvez utiliser la chaîne d’outils Clang pour la compilation basée sur ARM des applications JET écrites en C, Python ou Ruby. Utilisez la commande mk-arm,bsdx au lieu d’utiliser la chaîne d’outils mk-i386,bsdx Clang pour compiler votre application.

  9. Copiez le package sur un équipement exécutant Junos OS.

Configurez l’équipement Junos et installez le package.

  1. Passez en mode configuration.

  2. Configurez l’ID du fournisseur de l’application, le type de licence et l’étendue du déploiement sur l’équipement Junos, si nécessaire. Utilisez la même licence fournisseur que celle que vous avez utilisée pour la packager.

    Pour plus d’informations, voir Configuration de l’application JET et de sa licence sur un équipement exécutant Junos OS.

  3. Passez au mode opérationnel et installez le package copié sur l’équipement Junos.

    Note:

    Cette étape échouera si providers elle n’est pas configurée.

  4. Vérifiez que le package a bien été installé.

  5. Passez en mode configuration.

  6. Configurez les arguments de ligne de commande via la CLI Junos OS. Si un script Python JET est disponible dans le répertoire /var/db/scripts/jet/ sur un équipement exécutant Junos OS, vous pouvez configurer les arguments de ligne de commande pour le fichier et fournir les arguments à partir de l’interface CLI Junos.

    Voici les arguments de l’application.

    Configurez les arguments de ligne de commande dans la CLI. Dans cet exemple, le nom du script est cmdline_args.py.

  7. Validez la configuration et quittez le mode opérationnel.

  8. Exécutez l’application.

Exemple : développer un package Python signé avec des dépendances C

Une fois que vous avez configuré la VM JET et obtenu une certification de signature, vous êtes prêt à créer le sandbox de développement dans la VM et à commencer à développer votre application signée sur l’équipement. Utilisez cet exemple pour développer un package Python signé avec des dépendances C.

  1. Découvrez le sandbox.
  2. Créez un répertoire d’application dans le sous-répertoire Python.
  3. Un bitarray est un exemple d’un module Python relativement simple avec une dépendance C. Téléchargez et extrayez le bitarray de https://pypi.org/project/bitarray/ dans le répertoire de l’application Python.

    Il s’agit d’un exemple d’application Python simple qui utilise un module bitarray :

    Si vous écrivez votre application à l’aide de Python 3, incluez le mot-clé PASS dans le bloc d’exception du script.

  4. Créez le fichier de configuration JSON qui fait référence aux fichiers source externes. Voir package d’applications JET pour plus d’informations.
  5. Exécutez la commande suivante pour créer les makefiles nécessaires et le fichier manifeste qui localise les fichiers sur l’équipement Junos lorsque le package est installé.
  6. Pour localiser le module bitarray sur un équipement Junos, ajoutez le chemin /PyAppC/ pour le fichier __init__.py et le chemin de répertoire bitarray/ pour le fichier _bitarray.so.
  7. Créez et packagez l’application.
    Note:

    À partir de la version 20.2R1 de Junos OS, si vous devez exécuter votre application JET sur un équipement ACX710, vous pouvez utiliser la chaîne d’outils Clang pour la compilation basée sur ARM des applications JET écrites en C, Python ou Ruby. Utilisez la commande mk-arm,bsdx au lieu d’utiliser la chaîne d’outils mk-i386,bsdx Clang pour compiler votre application.

  8. Copiez le package intégré sur l’équipement exécutant Junos OS.
  9. Configurez l’ID du fournisseur de l’application, le type de licence et l’étendue du déploiement sur l’équipement Junos, si nécessaire. Utilisez la même licence fournisseur que celle que vous avez utilisée pour la packager.
  10. Installez le package sur l’équipement exécutant Junos OS.

    Une fois le package installé avec succès, le module Python dépendant et la bibliothèque partagée C sont installés sur l’équipement dans le chemin du module Python standard spécifié dans le fichier manifeste.

  11. Ajoutez l’application en mode de configuration.
  12. Exécuter l’application
Tableau de l’historique des versions
Libération
Description
20.2R1
À partir de la version 20.2R1 de Junos OS, si vous devez exécuter votre application JET sur un équipement ACX710, vous pouvez utiliser la chaîne d’outils Clang pour la compilation basée sur ARM des applications JET écrites en C, Python ou Ruby.