Créer des RPC personnalisés dans YANG pour les équipements exécutant Junos OS
Juniper Networks fournit des modules YANG qui définissent les appels de procédure à distance (RPC) pour les commandes opérationnelles de Junos OS. À partir de la version 16.1R3 de Junos OS, vous pouvez également créer des modèles de données YANG qui définissent des RPC personnalisés pour les équipements pris en charge exécutant Junos OS. La création de RPC personnalisés vous permet de définir avec précision les paramètres d’entrée et les opérations, ainsi que les champs de sortie et le formatage pour vos tâches opérationnelles spécifiques sur ces équipements. Lorsque vous étendez la hiérarchie de commandes opérationnelles avec un RPC YANG personnalisé, vous devez également fournir un script d’action qui sert de gestionnaire pour le RPC. La définition RPC fait référence au script d’action, qui est appelé lorsque vous exécutez le RPC.
Cette rubrique décrit les étapes générales de création d’un module YANG qui définit un RPC personnalisé pour les équipements exécutant Junos OS. Pour plus d’informations sur la création d’un script d’action RPC et la personnalisation de la sortie CLI de RPC, consultez Créer des scripts d’action pour les RPC YANG sur les équipements Junos et Comprendre les extensions YANG de Junos OS pour le formatage de la sortie RPC.
Cette section présente un modèle générique pour un module YANG qui définit un RPC pour les équipements exécutant Junos OS. Le modèle est suivi d’une explication détaillée des différentes sections et déclarations du modèle.
module module-name { namespace "namespace"; prefix prefix; import junos-extension { prefix junos; } import junos-extension-odl { prefix junos-odl; } organization "organization"; description "module-description"; rpc rpc-name { description "RPC-description"; junos:command "cli-command" { junos:action-execute { junos:script "action-script-filename"; } } input { leaf input-param1 { type type; description description; } leaf input-param2 { type type; description description; } // additional leaf definitions } output { container output-container-name { container container-name { leaf output-param1 { type type; description description; // optional formatting statements } // additional leaf definitions junos-odl:format container-name-format { // CLI formatting for the parent container } } // Additional containers } } } }
Les RPC sont définis au sein de modules. Le nom du module doit être descriptif et indiquer l’objet général des RPC inclus dans ce module, et l’espace de noms de module doit être unique.
module module-name { namespace "namespace"; prefix prefix; }
Conformément à la RFC 6020, YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF), le nom du module et le nom de base du fichier dans lequel le module réside doivent être identiques. Par exemple, si le nom du module est get-if-info
, le nom de fichier du module doit être get-if-info.yang.
Le module doit importer le module d’extensions DDL Junos OS et définir un préfixe. Le module d’extensions inclut les extensions YANG requises dans la définition des RPC exécutés sur les équipements exécutant Junos OS.
import junos-extension { prefix junos; }
À partir de la version 17.4R1 de Junos OS, les modules YANG de Junos OS utilisent une nouvelle convention de nommage pour le nom, le nom et l’espace de noms du module.
Si l’un des RPC du module rend une sortie ASCII formatée, le module doit importer le module d’extensions ODL Junos OS et définir un préfixe. Le module d’extensions ODL définit les extensions YANG que vous utilisez pour spécifier avec précision le rendu de la sortie lorsque vous exécutez la commande opérationnelle pour ce RPC dans la CLI ou lorsque vous demandez la sortie RPC au format texte.
import junos-extension-odl { prefix junos-odl; }
Inclure l’organisation responsable du module ainsi qu’une description du module.
organization "organization"; description "module-description";
Dans le module, vous pouvez définir un ou plusieurs RPC, chacun avec un nom unique. Le nom RPC est utilisé pour exécuter le RPC à distance, et doit donc clairement indiquer l’objectif du RPC. L’objectif du RPC peut être précisé plus en détail dans l’énoncé description
. Si vous définissez également une commande CLI pour le RPC, l’interface CLI affiche la description RPC dans l’aide contextuelle de cette liste de commandes.
rpc rpc-name { description "RPC-description"; }
Dans la définition RPC, définissez les command
, action-execute
et script
les instructions, qui sont des instructions d’extension Junos OS DDL. L’instruction command
définit la commande opérationnelle que vous utilisez pour exécuter le RPC dans l’interface cli de Junos OS. Pour exécuter le RPC à distance, utilisez le nom RPC pour la balise de demande.
L’état action-execute
et script
la sous-déclaration doivent être définis pour chaque RPC. Le script
sous-état définit le nom du script d’action qui est appelé lorsque vous exécutez le RPC. Vous devez définir un seul et unique script d’action pour chaque RPC.
À partir de la version 17.3 de Junos OS, l’instruction action-execute
est une sous-déclaration à command
. Dans les versions précédentes, les action-execute
déclarations et command
sont placées au même niveau, et l’instruction command
est facultative.
Dans Junos OS version 17.3 et versions ultérieures, définissez l’instruction
command
et ses sous-états.junos:command "cli-command" { junos:action-execute { junos:script "action-script-filename"; } }
Dans Junos OS version 17.2 et versions antérieures, définissez les
action-execute
instructions etscript
, éventuellement, définissez l’instructioncommand
.junos:command "cli-command"; junos:action-execute { junos:script "action-script-filename"; }
Vous devez ajouter le module YANG et le script d’action à l’équipement dans le cadre d’un package YANG nouveau ou existant en émettant la request system yang add
commande ou request system yang update
. Il vous suffit donc de fournir le nom et non le chemin du script d’action pour l’instruction junos:script
.
Si votre script d’action est écrit en Python, vous devez permettre à l’équipement d’exécuter des scripts Python non signés en configurant l’instruction language python
ou language python3
sous le [edit system scripts]
niveau hiérarchique sur chaque équipement sur lequel le script sera exécuté.
Les paramètres d’entrée pour l’opération RPC sont définis dans l’instruction optionnelle input
. Lorsque vous exécutez le RPC, Junos OS appelle le script d’action rpc et transmet tous les paramètres d’entrée au script.
input { leaf input-param1 { type type; description description; } leaf input-param2 { type type; description description; } // additional leaf definitions }
À partir de la version 19.2R1 de Junos OS, les RPC YANG personnalisés prennent en charge les paramètres d’entrée du type empty
lors de l’exécution de la commande RPC dans l’interface cli de Junos OS. Dans les versions précédentes, les paramètres d’entrée du type empty
ne sont pris en charge que lors de l’exécution du RPC dans une session de protocole NETCONF ou Junos XML.
L’instruction facultative output
enferme les paramètres de sortie à l’opération RPC. L’instruction output
peut inclure un conteneur racine de premier niveau. Il est conseillé de corréler le nom du conteneur racine et le nom RPC. Par exemple, si le nom RPC est get-xyz-information
, le nom du conteneur peut être xyz-information
. Les sous-états de l’instruction output
définissent les nœuds sous le nœud rpc output
. Dans la sortie XML, cela se traduirait par des éléments XML sous l’élément <rpc-reply>
.
output { container output-container-name { ... } }
Dans le conteneur racine, vous pouvez inclure et container
des leaf
instructions. Les instructions leaf décrivent les données incluses dans la sortie RPC de ce conteneur.
output { container output-container-name { container container-name { leaf output-param1 { type type; description description; } // additional leaf definitions } } }
Par défaut, le format de sortie RPC est XML. Vous pouvez également définir une sortie ASCII formatée qui s’affiche lorsque vous exécutez la commande opérationnelle de ce RPC dans la CLI ou lorsque vous demandez la sortie RPC au format texte.
À partir de la version 17.3 de Junos OS, la mise en forme cli d’un RPC personnalisé est définie dans l’instruction d’extension junos-odl:format
. Dans les versions précédentes, la mise en forme cli est définie à l’aide d’un conteneur qui inclut l’instruction junos-odl:cli-format
.
À partir de la version 17.3 de Junos OS, vous définissez la mise en forme de l’interface de ligne de commande en définissant une
junos-odl:format
déclaration, qui est une déclaration d’extension ODL de Junos OS.output { container output-container-name { container container-name { leaf output-param1 { type type; description description; // optional formatting statements } // additional leaf definitions junos-odl:format container-name-format { // CLI formatting for the parent container } } // Additional containers } }
Avant la version 17.3 de Junos OS, vous définissez la mise en forme cli d’un conteneur donné dans un conteneur enfant qui inclut l’instruction
junos-odl:cli-format
.container container-name-format { junos-odl:cli-format; // CLI formatting for the parent container }
Dans l’instruction ou le conteneur qui définit la mise en forme de la CLI, vous pouvez personnaliser la sortie CLI du RPC à l’aide d’instructions définies dans le module d’extensions ODL Junos OS. Pour plus d’informations sur le rendu de la sortie ASCII formatée, voir Personnaliser la sortie RPC YANG sur les équipements exécutant Junos OS. Vous pouvez également fixer le moment où les données d’un conteneur particulier sont émises dans la sortie CLI d’un RPC. Pour plus d’informations sur la construction de différents niveaux de sortie pour un même RPC, voir Définir différents niveaux de sortie dans des RPC YANG personnalisés pour les équipements Junos.
Pour utiliser le RPC sur un équipement exécutant Junos OS :
- Télécharger le module et le script d’action sur l’équipement
- Ajouter les fichiers à un package YANG nouveau ou existant en émettant la
request system yang add
commande ourequest system yang update
opérationnelle - Exécuter le RPC
- Pour exécuter le RPC dans la CLI, exécutez la commande définie par l’instruction
junos:command
. - Pour exécuter le RPC à distance, utilisez le nom RPC dans une opération de demande RPC.
- Pour exécuter le RPC dans la CLI, exécutez la commande définie par l’instruction
À partir de la version 17.3R1 de Junos OS, lorsque vous chargez des modèles de données YANG personnalisés sur l’équipement, vous n’avez pas besoin de charger explicitement les modules d’extension Junos OS requis. Dans les versions précédentes, vous devez charger les modules d’extension Junos OS pour tous les packages qui utilisent les modules.
Lorsque vous exécutez le RPC dans l’interface cli en émettant la commande définie par l’instruction junos:command
, l’équipement affiche la sortie RPC dans le format CLI défini par le RPC. Si le RPC ne définit pas la mise en forme de l’interface cli, par défaut, aucune sortie ne s’affiche pour ce RPC dans l’interface cli. Toutefois, vous pouvez toujours afficher la sortie XML de ce RPC dans l’interface cli en ajoutant le | display xml
filtre à la commande.
Pour plus d’informations sur les RPC YANG, voir RFC 6020, YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF) et les RFC associés.
empty
lors de l’exécution de la commande RPC dans l’interface cli de Junos OS.
action-execute
est une sous-déclaration à
command
.
junos-odl:format
.