Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utiliser l’utilitaire de configuration PyEZ Junos pour configurer les équipements Junos

Junos PyEZ vous permet d’apporter des modifications de configuration structurées et non structurées sur les équipements Junos. Cette rubrique explique comment utiliser l’utilitaire jnpr.junos.utils.config.Config pour apporter des modifications de configuration non structurées, qui consistent en données de configuration statiques ou templatées formatées sous forme de texte ASCII, d’éléments XML Junos, de commandes Junos OS set ou de notation d’objet JavaScript (JSON). L’utilitaire Config vous permet également de revenir à une configuration précédemment validée ou de revenir à une configuration de sauvegarde.

Présentation du processus de configuration

Une fois que vous vous êtes connecté à un équipement Junos, pour le configurer à l’aide de l’utilitaire Config , créez d’abord un Config objet et associez-le à l’instance Device . Par exemple :

Par défaut, Junos PyEZ met à jour la configuration globale du candidat (également appelée base de données de configuration partagée). Le processus de base des modifications de configuration consiste à verrouiller la base de données de configuration, à charger les modifications de configuration, à valider la configuration pour la rendre active, puis à déverrouiller la base de données de configuration. Lorsque vous utilisez l’utilitaire Junos PyEZ Config pour apporter des modifications de configuration non structurées dans la base de données de configuration partagée, vous pouvez effectuer ces actions en appelant les méthodes d’instance appropriées décrites ici :

  1. Verrouiller la configuration à l’aide de lock()

  2. Modifiez la configuration en effectuant l’une des actions suivantes :

  3. Valider la configuration à l’aide commit() de , comme décrit dans La validation de la configuration et utilisation de Junos PyEZ pour valider la configuration

  4. Libérez la configuration à l’aide de unlock()

Vous pouvez également utiliser un gestionnaire de contexte (with ... as syntaxe) pour créer une instance d’objet Config , et certains modes de configuration exigent que vous en utilisiez un. Pour ces modes, Junos PyEZ verrouille et débloque automatiquement la configuration. Pour plus d’informations, voir Spécifier le mode de configuration.

Lorsque vous utilisez la load() méthode pour modifier la configuration, en plus de spécifier le mode de configuration, vous pouvez également spécifier le type de charge opérationnelle, le format des changements de configuration et la source des données de configuration. L’utilitaire Config prend en charge un grand nombre des mêmes opérations et formats de charge disponibles dans l’interface de ligne de commande Junos. Pour plus d’informations, consultez :

Vous pouvez spécifier la source des données de configuration sous la forme d’un fichier sur le serveur local, d’un fichier sur l’équipement client ou d’un fichier à une ADRESSE URL pouvant être atteinte depuis l’équipement client, ou sous la forme d’une chaîne, d’un objet XML ou d’un modèle Jinja2. Pour plus d’informations sur la spécification de la source de données de configuration, reportez-vous aux sections suivantes :

Spécifier le mode de configuration

Par défaut, lorsque vous créez un Config objet et que vous ne spécifiez pas explicitement un mode de configuration, Junos PyEZ met à jour la configuration globale du candidat. Vous pouvez également spécifier un autre mode de configuration à utiliser lors de la modification de la base de données de configuration. Pour spécifier un mode autre que celui par défaut, vous devez créer l’objet à l’aide Config d’un gestionnaire de contexte et définir l’argument mode sur le mode souhaité. Les modes pris en charge incluent private, exclusive, dynamicbatchet ephemeral.

Note:

Vous pouvez utiliser Junos PyEZ pour mettre à jour la base de données de configuration éphémère sur les équipements prenant en charge cette base de données. La base de données éphémère est une base de données de configuration alternative qui fournit une interface de programmation rapide pour l’exécution des mises à jour de configuration sur les équipements Junos. Il s’agit d’une fonctionnalité avancée qui, si elle est utilisée de manière incorrecte, peut avoir un impact négatif sérieux sur le fonctionnement de l’équipement. Pour plus d’informations, consultez Understanding the Ephemeral Configuration Database( Comprendre la base de données de configuration éphémère).

Lorsque vous spécifiez un mode autre que celui par défaut, le gestionnaire de contexte gère l’ouverture, le verrouillage, la fermeture et le déverrouillage de la base de données. Cela garantit que vous ne laissez pas la base de données verrouillée de manière non intentionnelle. Dans ce cas, il vous suffit d’appeler les load() méthodes pour commit() configurer l’équipement.

Par exemple, le code suivant modifie la configuration à l’aide du configure private mode, ce qui ouvre une copie privée de la configuration du candidat :

Pour plus d’informations sur les différents modes de configuration, consultez le Guide de l’utilisateur CLI et Utiliser Junos PyEZ pour configurer les équipements Junos.

Spécifier l’opération de charge

Junos PyEZ prend en charge le chargement des modifications de configuration à l’aide de plusieurs des mêmes opérations de charge prises en charge dans l’interface de ligne de commande Junos. Vous spécifiez le fonctionnement de charge souhaité en incluant ou en omettant les paramètres appropriés dans la Config load() méthode.

Le tableau 1 présente les opérations de charge prises en charge et l’argument de méthode correspondant load() . Par défaut, Junos PyEZ effectue une load replace opération. Pour utiliser une autre opération de True charge, définissez le paramètre correspondant dans la load() méthode.

Tableau 1 : Paramètres de spécification du type d’opération de charge dans les méthodes load() et set()

Fonctionnement de charge

Argument

Description

Première version de Junos PyEZ prise en charge

load merge

merge=True

Fusionner la configuration chargée avec la configuration existante.

1.0

load override

overwrite=True

Remplacez l’ensemble de la configuration par la configuration chargée.

1.0

load patch

patch=True

Chargez les données de configuration à partir d’un fichier de correctif.

2.4.0

load replace (par défaut)

Fusionner la configuration chargée avec la configuration existante, mais remplacer les instructions de la configuration existante par celles qui spécifient la replace: balise dans la configuration chargée. S’il n’y a pas d’instruction dans la configuration existante, l’instruction de la configuration chargée est ajoutée.

1.0

load update

update=True

Comparez la configuration complète chargée avec la configuration existante. Chaque élément de configuration différent de la configuration chargée remplace son élément correspondant dans la configuration existante. Lors du processus de validation, seuls les processus système affectés par les éléments de configuration modifiés analysent la nouvelle configuration.

2.1.0

L’exemple suivant exécute une load override opération qui remplace l’ensemble de la configuration du candidat par la configuration chargée, puis valide la configuration du candidat pour la rendre active.

Spécifier le format des données de configuration à charger

L’utilitaire Junos PyEZ Config vous permet de configurer les équipements Junos à l’aide de l’un des formats standard pris en charge. Vous pouvez fournir des données de configuration sous forme de chaînes, de fichiers, d’objets XML ou d’objets de modèle Jinja2. Les fichiers peuvent contenir des extraits de données de configuration ou des modèles Jinja2. Lorsque vous fournissez des données de configuration dans une chaîne, un fichier ou un modèle Jinja2, les formats pris en charge pour les données incluent du texte ASCII, des éléments XML Junos, des commandes Junos OS set et JSON. Vous pouvez spécifier le format des données de configuration soit en incluant explicitement le paramètre dans la format Config méthode d’utilité load() , soit en ajoutant l’extension appropriée au fichier de données de configuration. Si vous ne spécifiez pas de format, la valeur par défaut est XML.

Note:

À partir de Junos PyEZ Version 1.2, Junos PyEZ détecte automatiquement le format lorsque vous fournissez les données de configuration sous forme de chaîne.

Le tableau 2 résume les formats pris en charge pour les données de configuration et la valeur correspondante pour l’extension et format les paramètres du fichier. Lorsque vous utilisez le format XML Junos pour les données de configuration, vous devez les joindre à la balise de niveau <configuration> supérieur.

Note:

Lors de la configuration de l’équipement, vous n’avez pas besoin d’inclure des données de configuration au format ASCII, des commandes Junos OS set ou JSON dans <configuration-text>, <configuration-set>ou <configuration-json> des balises, comme requis lors de la configuration de l’équipement au sein d’une session NETCONF.

Tableau 2 : Spécifier le format des données de configuration

Format des données de configuration

Extension de fichier

paramètre de format

Texte ASCII

.conf, .text, .txt

Texte

Notation d’objet JavaScript (JSON)

.Json

Json

Commandes Junos OS set

.Ensemble

Ensemble

Éléments XML Junos

.Xml

Xml

Note:

Lorsque le paramètre ou le overwrite paramètre est défini Truesur , vous ne pouvez pas utiliser le format de commande Junos OSset.update

Note:

Les équipements exécutant Junos OS version 16.1R1 ou ultérieure prennent en charge le chargement des données de configuration au format JSON.

Spécifier l’emplacement des données de configuration

Junos PyEZ vous permet de charger les données de configuration sous forme de chaînes, de fichiers, d’objets XML ou d’objets de modèle Jinja2. Les fichiers peuvent contenir des extraits de données de configuration ou des modèles Jinja2.

Le tableau 3 résume les paramètres de méthode load() que vous utilisez pour transmettre les données de configuration ou en faire référence à leur emplacement. Vous devez toujours spécifier le format des données en incluant le format paramètre dans l’appel de méthode, sauf lorsque vous utilisez des chaînes, des objets XML ou des fichiers dont le format est indiqué par l’extension du fichier. Lorsque vous utilisez les modèles Jinja2, incluez les template_vars paramètres à transmettre dans le dictionnaire des variables de modèle requises.

Tableau 3 : Référencer les données de configuration dans la méthode load()

Paramètre

Source de données de configuration

Description

format Configuration requise pour les paramètres

path

Fichier local

Chemin d’accès à un fichier sur le serveur de gestion de configuration local contenant des données de configuration au format ASCII, éléments XML Junos, commandes Junos OS set ou JSON.

Vous devez inclure le format paramètre lorsque l’extension du fichier n’indique pas le format des données.

template

Objet de modèle Jinja2

Objet jinja2 préchargé.

Inclure le paramètre dans la template_vars load() liste d’arguments de méthode pour faire référence à un dictionnaire contenant toutes les variables de modèle Jinja2 requises.

Vous devez inclure le format paramètre lorsque l’extension du fichier n’indique pas le format des données.

template_path

Fichier de modèle Jinja2 local

Chemin d’accès à un fichier sur le serveur de gestion de configuration local contenant un modèle Jinja2 au format ASCII, des éléments XML Junos, des commandes Junos OS set ou JSON.

Inclure le paramètre dans la template_vars load() liste d’arguments de méthode pour faire référence à un dictionnaire contenant toutes les variables de modèle Jinja2 requises.

Vous devez inclure le format paramètre lorsque l’extension du fichier n’indique pas le format des données.

url

Fichier distant

Chemin d’accès à un fichier situé sur l’équipement Junos ou à une URL distante pouvant être atteint à partir de l’équipement Junos à l’aide d’une URL FTP ou HTTP (Enviable Transfer Protocol).

Vous devez inclure le format paramètre lorsque l’extension du fichier n’indique pas le format des données.

vargs[0]

Objet XML

String

Objet XML ou chaîne contenant des données de configuration au format ASCII, des éléments XML Junos, des commandes Junos OS set ou JSON.

Junos PyEZ détecte automatiquement le format des données de configuration dans ce cas, et le format paramètre n’est pas requis.

Charger les données de configuration à partir d’un fichier local ou distant

Junos PyEZ vous permet de charger des données de configuration formatées sous forme de texte ASCII, d’éléments XML Junos, de commandes Junos OS set ou JSON à partir d’un fichier local ou distant.

Pour charger les données de configuration à partir d’un fichier local sur le serveur de gestion de la configuration, définissez le paramètre de path la load() méthode sur le chemin absolu ou relatif du fichier. Par exemple :

Vous pouvez également charger les données de configuration à partir d’un fichier situé sur l’équipement Junos ou à l’adresse URL accessible depuis l’équipement Junos. Pour charger les données de configuration à partir d’un fichier sur l’équipement Junos, définissez le url paramètre sur le chemin absolu ou relatif du fichier sur l’équipement client et incluez tout autre paramètre requis pour le fonctionnement de charge. Par exemple :

Pour charger les données de configuration d’un fichier à partir d’une URL distante, définissez le url paramètre sur l’emplacement FTP ou sur l’URL HTTP d’un fichier distant, et incluez tout autre paramètre requis pour le fonctionnement de la charge. Par exemple :

Pour des informations détaillées sur la spécification de l’URL, reportez-vous à l’attribut url du protocole XML Junos <load-configuration> fonctionnement.

Si le fichier n’indique pas le format des données de configuration en utilisant l’une des extensions de fichier acceptées comme indiqué dans Spécifier le format des données de configuration à charger, vous devez spécifier le format en incluant le format paramètre dans la liste des paramètres de la load() méthode. Par exemple :

Pour plus d’informations sur le chargement des données de configuration à partir de modèles ou de fichiers de modèle Jinja2, consultez Données de configuration de charge à l’aide de modèles Jinja2.

Charger les données de configuration à partir d’une chaîne

Pour charger les données de configuration au format ASCII, les éléments XML Junos, les commandes Junos OS set ou JSON à partir d’une chaîne incluent la chaîne comme premier argument dans la load() liste d’arguments de méthode. Junos PyEZ détecte automatiquement le format des données de configuration dans les chaînes. Le format paramètre est donc facultatif dans ce cas.

Les extraits de code suivants présentent des chaînes multiline d’exemple contenant des données de configuration dans les différents formats et les appels correspondants à la load() méthode. Le paramètre facultatif format est explicitement inclus dans chaque exemple par souci de clarté. Dans les exemples, cu il s’agit d’une instance de l’utilitaire Config , qui fonctionne sur l’équipement Junos cible.

  • Pour les données de configuration formatées en texte ASCII :

    Chargez les données de configuration en fournissant la chaîne comme premier argument dans la liste, puis spécifiez format="text"éventuellement .

  • Pour les données de configuration au format XML Junos :

    Chargez les données de configuration en fournissant la chaîne comme premier argument dans la liste, puis spécifiez format="xml"éventuellement .

  • Pour les données de configuration formatées sous forme de commandes Junos OS set :

    Chargez les données de configuration en fournissant la chaîne comme premier argument dans la liste, puis spécifiez format="set"éventuellement .

  • Pour les données de configuration formatées à l’aide de JSON :

    Chargez les données de configuration en fournissant la chaîne comme premier argument dans la liste, puis spécifiez format="json"éventuellement .

Chargement des données de configuration formatées en tant qu’objet XML

Pour charger les données de configuration formatées en tant qu’objet XML, incluez-les comme premier argument dans la liste d’arguments de méthode load() et indiquez tout autre paramètre requis. Le format par défaut des données de configuration étant XML, il n’est pas nécessaire d’inclure explicitement le paramètre dans l’appel format de méthode.

Le code suivant présente un objet XML et l’appel correspondant à la load() méthode :

Charger les données de configuration à l’aide des modèles Jinja2

Junos PyEZ prend en charge l’utilisation des modèles Jinja2 pour rendre les données de configuration Junos. Jinja est un moteur de modèles pour Python qui vous permet de générer des documents à partir de modèles prédéfinis. Les modèles, qui sont des fichiers texte dans la langue souhaitée, offrent une grande flexibilité grâce à l’utilisation d’expressions et de variables. Vous pouvez créer des données de configuration Junos à l’aide de modèles Jinja2 dans l’un des formats de configuration pris en charge, qui comprend du texte ASCII, des éléments XML Junos, des commandes Junos OS set et JSON. Junos PyEZ utilise le modèle Jinja2 et un dictionnaire fourni de variables pour rendre les données de configuration.

Les modèles Jinja2 fournissent une méthode puissante pour générer des données de configuration, en particulier pour des catégories de configuration similaires. Par exemple, au lieu d’ajouter manuellement les mêmes instructions de configuration pour chaque interface d’un équipement, vous pouvez créer un modèle qui s’itère sur une liste d’interfaces et crée les instructions de configuration requises pour chacune d’entre elles. Dans Jinja, les blocs sont délimités par «{% » et «%} » et les variables sont incluses dans «{{ » et «}} ».

L’exemple suivant de modèle Jinja2 génère des données de configuration qui activent MPLS sur l’unité logique 0 pour chaque interface dans une liste donnée, et configure également l’interface sous les protocoles MPLS et RSVP.

Dans le code PyEZ Junos, le dictionnaire correspondant des variables de modèle Jinja2 est :

Pour charger le modèle Jinja2 dans le code Junos PyEZ, définissez le template_path paramètre sur le chemin du fichier de modèle et définissez le template_vars paramètre dans le dictionnaire des variables de modèle. Si vous n’utilisez pas l’une des extensions de fichier acceptées pour indiquer le format des données de configuration, vous devez inclure le paramètre dans la format liste des paramètres de la load() méthode.

Note:

Si vous fournissez un objet Jinja2 Template préchargé, vous devez utiliser le template paramètre au lieu du paramètre dans la template_path liste d’arguments de méthode load() .

Junos PyEZ utilise le modèle Jinja2 et le dictionnaire des variables pour rendre les données de configuration suivantes, qui sont ensuite chargées dans la configuration du candidat et validées sur l’équipement :

La vidéo suivante présente une courte session Python qui explique comment utiliser un modèle Jinja2 pour configurer un équipement Junos.

Pour plus d’informations sur Jinja2, consultez la documentation sur Jinja2 à l’adresse https://jinja.pocoo.org/docs/.

Restaurer la configuration

Les équipements Junos stockent une copie de la configuration validée la plus récente et jusqu’à 49 configurations précédentes, selon la plate-forme. Vous pouvez revenir à n’importe quelle configuration stockée. Il est utile lorsque les changements de configuration provoquent des résultats indésirables et que vous souhaitez revenir à une configuration active connue. La restauration de la configuration est similaire au processus d’apporter des modifications de configuration sur l’équipement. Toutefois, au lieu de charger les données de configuration, vous effectuez une restauration, qui remplace l’ensemble de la configuration du candidat par une configuration précédemment validée.

La méthode de classe rollback() PyEZ jnpr.junos.utils.config.Config de Junos vous permet de restaurer la configuration sur un équipement Junos. Pour restaurer la configuration, appelez la rollback() méthode et définissez l’argument rb_id sur l’ID de la configuration de restauration. Les valeurs d’ID valides sont 0 (zéro, pour la configuration validée la plus récente) via une valeur inférieure au nombre de configurations précédentes stockées (49 maximum). Si vous omettez ce paramètre dans l’appel de méthode, il est 0 par défaut.

L’exemple suivant invite l’ID de restauration de la configuration à restaurer, restaure la configuration, imprime les différences de configuration, puis valide la configuration pour en faire la configuration active sur l’unité.

Pour un exemple plus complet incluant le traitement des erreurs, reportez-vous à l’exemple : Utiliser Junos PyEZ pour restaurer la configuration.

Charger la configuration de sauvegarde

Une configuration de sauvegarde vous permet de définir une configuration de fonctionnement connue ou une configuration avec un état connu que vous pouvez restaurer à tout moment. Vous utilisez la configuration de sauvegarde lorsque vous devez revenir à une configuration connue ou en dernier recours si votre configuration de routeur ou de commutateur et les fichiers de configuration de secours deviennent endommagés au-delà de la réparation. Lorsque vous créez une configuration de sauvegarde, l’équipement enregistre la configuration validée la plus récente en tant que configuration de sauvegarde.

L’utilitaire Junos PyEZ jnpr.junos.utils.config.Config vous permet de gérer la configuration de sauvegarde sur les équipements Junos. Après avoir créé une instance de la Config classe, vous utilisez la rescue() méthode pour gérer la configuration de sauvegarde. Vous spécifiez l’action à exécuter sur la configuration de sauvegarde en définissant le rescue() paramètre de la méthode action sur l’opération souhaitée.

Pour charger la configuration de sauvegarde existante dans la configuration du candidat, spécifiez action="reload". En l’absence de configuration de sauvegarde, l’opération de charge renvoie False. Après avoir chargé la configuration de sauvegarde, vous devez valider la configuration pour en faire la configuration active sur l’unité.

L’exemple suivant charge et valide la configuration de sauvegarde, le cas échéant :

Pour plus d’informations sur la création, la récupération ou la suppression de la configuration de sauvegarde, et pour obtenir des exemples supplémentaires, reportez-vous à la section Utiliser Junos PyEZ pour gérer la configuration de sauvegarde sur les équipements Junos.

Valider la configuration

Après avoir modifié la configuration, vous devez valider la configuration pour en faire la configuration active sur l’équipement. Lorsque vous utilisez l’utilitaire Config pour apporter des modifications de configuration non structurées à un équipement, vous validez la configuration du candidat en appelant la commit() méthode.

Pour plus d’informations sur le fonctionnement de validation et les options de validation prises en charge dans les scripts Junos PyEZ, consultez Utilisation de Junos PyEZ pour valider la configuration.

Tableau Historique des versions
Libération
Description
1.2
À partir de Junos PyEZ Version 1.2, Junos PyEZ détecte automatiquement le format lorsque vous fournissez les données de configuration sous forme de chaîne.