Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Générer un changement de configuration persistant ou transitoire dans les scripts de validation SLAX et XSLT

Les scripts de validation de Junos OS appliquent des règles de configuration personnalisées et peuvent modifier automatiquement la configuration lorsqu’elle n’est pas conforme à vos règles de configuration personnalisées. Pour générer une modification persistante ou transitoire dans les scripts de validation XSLT (Extensible Stylesheet Language Transformations) ou SLAX (Alternative Stylesheet Language Transformations) :

  1. Au début du script, incluez le protocole standard de script de validation XSLT ou SLAX de la section Protocole standard requis pour les scripts de validation.

    Passe-partout XSLTPasse-partout SLAX
  2. À la position indiquée par le commentaire «insert your code here , », inclure une ou plusieurs instructions de programmation XSLT ou leurs équivalents SLAX. Les constructions XSLT couramment utilisées sont les suivantes :

    • <xsl:choose> <xsl:when> <xsl:otherwise>: construction conditionnelle qui permet de traiter différentes instructions dans différentes circonstances. L’instruction <xsl:choose> contient un ou plusieurs <xsl:when> éléments, chacun d’entre eux testant une expression XPath. Si le test est évalué comme vrai, le processeur XSLT exécute les instructions de l’élément<xsl:when>. Le processeur XSLT ne traite que les instructions contenues dans le premier <xsl:when> élément dont test l’attribut est évalué comme true. Si aucun des attributs des <xsl:when> éléments n’est évalué comme vrai, le contenu de l’élément<xsl:otherwise>, s’il test est présent, est traité.

    • <xsl:for-each select="xpath-expression">—Instruction de programmation qui indique au processeur XSLT de rassembler un ensemble de nœuds et de les traiter un par un. Les noeuds sont sélectionnés par l’expression XPath dans l’attribut select . Chacun des nœuds est ensuite traité selon les instructions contenues dans l’instruction <xsl:for-each> . Le code à l’intérieur d’une <xsl:for-each> instruction est évalué récursivement pour chaque nœud qui correspond à l’expression XPath. Le contexte est déplacé vers le nœud à chaque passe.

    • <xsl:if test="xpath-expression">: construction conditionnelle qui entraîne le traitement des instructions si l’expression XPath de l’attribut test a la valeur .true

    Par exemple, les instructions de programmation XSLT suivantes sélectionnent chaque interface SONET/SDH pour laquelle la famille de protocoles MPLS n’est pas activée :

    En SLAX, l’équivalent for-each et if les constructions sont :

    Pour plus d’informations sur l’utilisation des instructions de programmation, y compris des exemples et du pseudocode, consultez Vue d’ensemble des instructions de programmation XSLT. Pour plus d’informations sur l’écriture de scripts en SLAX au lieu de XSLT, reportez-vous à la section Présentation de SLAX.

  3. Incluez des instructions pour modifier la configuration.

    Il existe deux façons de générer un changement persistant et deux façons de générer un changement transitoire :

    • Pour générer une modification permanente, vous pouvez soit référencer le jcs:emit-change modèle, soit inclure un <change> élément.

    • Pour générer un changement transitoire, vous pouvez soit référencer le jcs:emit-change modèle et passer le paramètre avec 'transient-change' selectedtag, soit inclure un <transient-change> élément.

    Le jcs:emit-change modèle permet d’établir des scripts plus efficaces et moins sujets aux erreurs, car vous pouvez définir le contenu de la modification sans spécifier la hiérarchie XML complète de l’instruction concernée. Au lieu de cela, la hiérarchie XML est définie dans l’expression XPath contenue dans l’instruction de programmation du script.

    Prenons les exemples suivants. Les deux exemples de changement persistant ont le même résultat, même s’ils placent l’instruction unit à des emplacements différents dans les <xsl:for-each> instructions de programmation et <xsl:if> . Dans les deux cas, le script recherche les interfaces SONET/SDH pour lesquelles la famille de protocoles MPLS n’est pas activée, ajoute l’instruction family mpls au niveau de la [edit interfaces so-fpc/pic/port unit logical-unit-number] hiérarchie et émet un message d’avertissement indiquant que la configuration a été modifiée. De même, les deux exemples de changement transitoire ont le même résultat. Ils définissent tous deux l’encapsulation PPP (Point-to-Point Protocol) sur toutes les interfaces SONET/SDH sur lesquelles la version IP 4 (IPv4) est activée.

    Modification persistante générée avec le modèle jcs :emit-change

    Dans cet exemple, le contenu de la modification persistante (contenue dans le content paramètre) est spécifié sans inclure la hiérarchie XML complète. Au lieu de cela, l’expression XPath dans l’instruction <xsl:for-each> de programmation définit le contexte de la modification.

    Le paramètre message est également inclus. Avec ce paramètre, le modèle appelle le jcs:emit-change <xnm:warning> modèle, ce qui envoie une notification d’avertissement à l’interface de ligne de commande. Le paramètre message inclut automatiquement les informations hiérarchiques actuelles dans le message d’avertissement.

    Modification persistante générée avec l’élément <change>

    Dans cet exemple, la hiérarchie XML complète menant à l’instruction affectée doit être incluse en tant qu’éléments enfants de l’élément <change> .

    Cet exemple inclut les informations de hiérarchie actuelles dans le message d’avertissement en référençant les jcs:edit-path modèles et jcs:statement .

    Changement transitoire généré avec le modèle jcs :emit-change

    Dans cet exemple, le contenu de la modification transitoire (contenue dans le content paramètre) est spécifié sans inclure la hiérarchie XML complète. Au lieu de cela, l’expression XPath dans l’instruction <xsl:for-each> de programmation définit le contexte de la modification. L’opérateur and dans l’expression XPath signifie que les deux opérandes doivent être true lorsqu’ils sont convertis en booléens ; le deuxième opérande n’est pas évalué si le premier opérande est false.

    Le paramètre de balise est inclus avec 'transient-change' sélectionné. Sans ce tag paramètre, le jcs:emit-change modèle génère une modification persistante par défaut.

    Changement transitoire généré avec l’élément <transit-change>

    Dans cet exemple, la hiérarchie XML complète menant à l’instruction affectée doit être incluse en tant qu’éléments enfants de l’élément <transient-change> .

  4. Enregistrez le script avec un nom significatif.

  5. Copiez le script dans le répertoire /var/db/scripts/commit sur le disque dur du périphérique ou dans le répertoire /config/scripts/commit sur la clé USB. Pour plus d’informations sur la définition de l’emplacement de stockage des scripts de validation, reportez-vous à la section Stocker les scripts dans la mémoire Flash.

    Si l’appareil dispose de deux moteurs de routage et que vous souhaitez que le script prenne effet sur les deux, vous devez copier le script sur les deux moteurs de routage. La commit synchronize commande ne copie pas les scripts entre les moteurs de routage.

  6. Activez le script en incluant l’instruction file filename au niveau de la [edit system scripts commit] hiérarchie.

  7. Si le script génère des changements transitoires, configurez l’instruction allow-transients .

    Configurez l’instruction au niveau de la [edit system scripts commit] hiérarchie pour permettre à tous les scripts de validation d’apporter des modifications transitoires.

    Vous pouvez également, sur les appareils et les versions pris en charge, configurer l’instruction au niveau de la [edit system scripts commit file filename] hiérarchie pour que seul le script individuel puisse apporter des modifications transitoires.

  8. Validez la configuration.

Si tous les scripts de validation s’exécutent sans erreur, toutes les modifications persistantes sont chargées dans la configuration candidate. Toutes les modifications transitoires sont chargées dans la configuration d’extraction, mais pas dans la configuration candidate. Le processus de validation se poursuit ensuite en validant la configuration et en propageant les modifications aux processus concernés sur l’appareil.

Pour afficher la configuration avec des modifications persistantes et transitoires appliquées, exécutez la show | display commit-scripts commande configuration mode.

Pour afficher la configuration en appliquant uniquement des modifications persistantes, exécutez la show | display commit-scripts no-transients commande configuration mode.

Les modifications persistantes et transitoires sont chargées dans la configuration de la même manière que la load replace commande configuration mode charge une configuration entrante. Lors de la génération d’une modification persistante ou transitoire, l’ajout de l’attribut replace="replace" à un élément de configuration produit le même comportement qu’une replace: balise dans une load replace opération. Les modifications persistantes et transitoires sont chargées dans la configuration avec le load replace comportement. Toutefois, les modifications persistantes sont chargées dans la configuration candidate, et les modifications transitoires sont chargées dans la configuration d’extraction.