Modification de la configuration à l’aide de scripts SLAX et XSLT
Les scripts d’opérations et d’événements SLAX et XSLT peuvent utiliser le jcs:load-configuration
modèle pour apporter des modifications structurées à la configuration de Junos OS. Les utilisateurs expérimentés, familiarisés avec Junos OS, peuvent écrire des scripts qui demandent les informations de configuration pertinentes et modifient la configuration en conséquence. Cela permet aux utilisateurs moins expérimentés de Junos OS de modifier la configuration en toute sécurité à l’aide du script.
Cette rubrique explique comment utiliser le jcs:load-configuration
modèle pour modifier la configuration.
présentation du modèle jcs :load-configuration
Le jcs:load-configuration
modèle est inclus dans le fichier d’importation junos.xsl . Le modèle peut :
Chargez les données de configuration XML Junos dans la configuration candidate à l’aide d’une
load merge
opération ,load replace
ouload override
, et validez les modificationsRestaurer la configuration active à une configuration précédemment validée
Charger et valider la configuration de sauvetage
Lorsqu’il est appelé, le jcs:load-configuration
modèle effectue les actions suivantes sur l’équipement cible :
Verrouille la base de données de configuration
Charge les modifications de configuration
Valide la configuration
Déverrouille la base de données de configuration
Le jcs:load-configuration
modèle apporte des modifications à la configuration en configure exclusive
mode. Dans ce mode, Junos OS verrouille la configuration globale candidate tant que le script accède à la base de données partagée et apporte des modifications à la configuration. L’appel de modèle peut échouer si la base de données de configuration est déjà verrouillée ou s’il existe des modifications existantes et non validées dans la configuration candidate lors de l’appel du modèle. Si le modèle charge correctement les données de configuration, mais que la validation échoue, Junos OS ignore les modifications non validées lorsque la base de données est déverrouillée.
La syntaxe du modèle SLAX est la suivante :
call jcs:load-configuration($action="(merge | override | replace)", $commit-options=node-set, $configuration=configuration-data, $connection=connection-handle, $rescue="rescue", $rollback=number);
La syntaxe du modèle XSLT est la suivante :
<xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="(merge | override | replace)"/> <xsl:with-param name="commit-options" select="node-set"/> <xsl:with-param name="configuration" select="configuration-data"/> <xsl:with-param name="connection" select="connection-handle"/> <xsl:with-param name="rescue" select=""rescue""/> <xsl:with-param name="rollback" select="number"/> </xsl:call-template>
Vous fournissez des arguments au jcs:load-configuration
modèle pour spécifier :
l’identifiant de connexion à l’appareil sur lequel les modifications seront effectuées
les modifications à apporter à la configuration
l’action load qui définit comment intégrer les modifications dans la configuration existante
Options de validation facultatives
Vous devez établir une connexion avec l’équipement cible avant d’appeler le jcs:load-configuration
modèle. Pour vous connecter à un périphérique, appelez la jcs:open()
fonction avec les arguments nécessaires. Définissez ensuite le jcs:load-configuration
connection
paramètre sur le handle renvoyé par la jcs:open()
fonction.
L’exemple de code suivant se connecte à l’appareil local et modifie la configuration :
var $conn = jcs:open(); var $results := { call jcs:load-configuration($configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn);
Lorsque vous appelez le jcs:load-configuration
modèle, vous pouvez inclure le paramètre pour charger de configuration
nouvelles données de configuration sur un périphérique, vous pouvez spécifier le rollback
paramètre pour rétablir la configuration à une configuration précédemment validée, ou vous pouvez spécifier le rescue
paramètre pour charger et valider la configuration de secours.
Chargement et validation des données de configuration
Les scripts SLAX et XSLT peuvent appeler le jcs:load-configuration
modèle pour modifier la configuration. Le configuration
paramètre définit les données de configuration XML Junos à charger, et le action
paramètre spécifie comment charger les données. Le commit-options
paramètre définit les options à utiliser lors de l’opération de validation.
L’exemple de script op suivant appelle le jcs:load-configuration
modèle pour modifier la configuration afin de désactiver une interface. Toutes les valeurs requises pour le jcs:load-configuration
modèle sont définies en tant que variables, qui sont ensuite transmises au modèle en tant qu’arguments.
L’opérateur :=
copie les résultats de l’appel jcs:load-configuration
de modèle dans une variable temporaire et exécute la node-set
fonction sur cette variable. L’opérateur :=
s’assure que la disable-results
variable est un ensemble de nœuds plutôt qu’un fragment d’arborescence de résultats afin que le script puisse accéder au contenu.
Syntaxe SLAX :
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <synchronize>; <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration($action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } var $close-results = jcs:close($conn); } }
Pour plus d’informations sur ce script, reportez-vous à la section Exemple : modification de la configuration à l’aide de scripts SLAX et XSLT.
Le code XSLT équivalent pour l’appel au jcs:load-configuration
modèle est :
<xsl:variable name="disable-results-temp"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="$load-action"/> <xsl:with-param name="commit-options" select="$options"/> <xsl:with-param name="configuration" select="$disable"/> <xsl:with-param name="connection" select="$conn"/> </xsl:call-template> </xsl:variable> <xsl:variable xmlns ext="http:xmlsoft.org/XSLT/namespace" \ name="disable-results" select="ext:node-set($disable-results-temp)"/>
Chargement et validation de la configuration de sauvetage
Une configuration de secours vous permet de définir une configuration de travail connue ou une configuration dont l’état est connu que vous pouvez restaurer à tout moment. Les scripts SLAX et XSLT peuvent appeler le jcs:load-configuration
modèle avec le rescue
paramètre pour charger la configuration de secours, s’il en existe une.
Le script d’opération SLAX suivant charge et valide la configuration de sauvetage existante.
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "/var/db/scripts/import/junos.xsl"; match / { <op-script-results> { /* Open the connection */ var $conn = jcs:open(); /* Load and commit the rescue configuration */ var $results = { call jcs:load-configuration($connection=$conn, $rescue="rescue"); } expr jcs:output($results); /* Close the connection */ expr jcs:close($conn); } }
Le script XSLT équivalent est :
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0" version="1.0"> <xsl:import href="/var/db/scripts/import/junos.xsl"/> <xsl:template match="/"> <op-script-results> <!-- Open the connection --> <xsl:variable name="conn" select="jcs:open()"/> <!-- Load and commit the rescue configuration --> <xsl:variable name="results"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="connection" select="$conn"/> <xsl:with-param name="rescue" select=""rescue""/> </xsl:call-template> </xsl:variable> <xsl:value-of select="jcs:output($results)"/> <!-- Close the connection --> <xsl:value-of select="jcs:close($conn)"/> </op-script-results> </xsl:template> </xsl:stylesheet>
Restauration de la configuration
Les scripts SLAX et XSLT peuvent appeler le jcs:load-configuration
modèle avec le rollback
paramètre pour rétablir la configuration précédemment validée. Le script d’opération SLAX suivant demande le numéro de restauration, puis charge la configuration de restauration demandée et la valide.
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match / { <op-script-results> { var $rollback_id = jcs:get-input("Rollback id: "); /* Open the connection */ var $conn = jcs:open(); /* Roll back the configuration and commit it */ var $results = { call jcs:load-configuration($connection=$conn, $rollback=$rollback_id); } /* Close the connection */ expr jcs:close($conn); } }
user@host> op load-rollback Rollback id: 1