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 Junos PyEZ pour configurer des é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 des données de configuration statiques ou modélisées au format texte ASCII, éléments Junos XML, commandes Junos OS set ou JavaScript Object Notation (JSON). L’utilitaire Config vous permet également de revenir à une configuration précédemment validée ou de revenir à une configuration de secours.

Vue d’ensemble du processus de configuration

Après s’être connecté à un périphérique Junos, pour configurer le périphérique à l’aide de l’utilitaire, créez d’abord Config un Config objet et associez-le à l’instance Device . Par exemple :

Par défaut, Junos PyEZ met à jour la configuration globale candidate (également appelée base de données de configuration partagée). Le processus de base pour apporter des modifications de configuration consiste à verrouiller la base de données de configuration, à charger les modifications de configuration, à valider la configuration pour qu’elle soit 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 les actions suivantes en appelant les méthodes d’instance appropriées décrites ici :

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

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

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

  4. Déverrouillez la configuration à l’aide de unlock()

Vous pouvez également utiliser un gestionnaire de contexte (with ... as syntaxe) pour créer une Config instance d’objet, et certains modes de configuration nécessitent que vous en utilisiez un. Pour ces modes, Junos PyEZ verrouille et déverrouille automatiquement la configuration. Pour plus d’informations, reportez-vous à la section 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 d’opération de chargement, le format des modifications 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 chargement que ceux disponibles dans l’interface de ligne de commande Junos. Pour plus d’informations, voir :

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 cible ou d’un fichier à une URL accessible à partir de l’équipement cible, 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, consultez les 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 candidate. Vous pouvez également spécifier un mode de configuration différent à utiliser lors de la modification de la base de données de configuration. Pour spécifier un mode autre que le mode par défaut, vous devez créer l’objet à l’aide d’un Config gestionnaire de contexte et définir l’argument mode sur le mode souhaité. Les modes pris en charge sont , exclusivedynamic, private, batch, et ephemeral.

Note:

Vous pouvez utiliser Junos PyEZ pour mettre à jour la base de données de configuration éphémère sur les périphériques qui prennent 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 effectuer des mises à jour de configuration sur les équipements Junos. Il s’agit d’une fonctionnalité avancée qui, si elle n’est pas utilisée correctement, peut avoir un impact négatif sérieux sur le fonctionnement de l’appareil. Pour plus d’informations, reportez-vous à la section Présentation de la base de données de configuration éphémère.

Lorsque vous spécifiez un mode autre que le mode par défaut, le gestionnaire de contexte gère l’ouverture et le verrouillage, ainsi que la fermeture et le déverrouillage de la base de données. Cela permet de s’assurer que vous ne laissez pas involontairement la base de données dans un état verrouillé. Dans ces cas, il vous suffit d’appeler les load() méthodes et commit() pour configurer l’appareil.

Par exemple, le code suivant apporte des modifications à la configuration à l’aide du configure private mode, qui ouvre une copie privée de la configuration candidate :

Pour plus d’informations sur les différents modes de configuration, reportez-vous au Guide de l’utilisateur CLI et à Utiliser Junos PyEZ pour configurer des équipements Junos.

Spécifier l’opération de chargement

Junos PyEZ prend en charge les modifications de configuration de chargement en utilisant un grand nombre des mêmes opérations de chargement que celles prises en charge dans l’interface de ligne de commande Junos. Vous spécifiez l’opération de charge souhaitée 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 chargement 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 chargement, définissez le paramètre correspondant sur True dans la load() méthode.

Tableau 1 : Paramètres pour spécifier le type d’opération de chargement dans les méthodes load() et set()

Opération de chargement

Argument

Description

Première version prise en charge de Junos PyEZ

load merge

merge=True

Fusionnez 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)

Fusionnez la configuration chargée avec la configuration existante, mais remplacez 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 dans la configuration chargée est ajoutée.

1.0

load update

update=True

Chargez une configuration complète et comparez-la à la configuration existante. Chaque élément de configuration différent dans la configuration chargée remplace son élément correspondant dans la configuration existante. Lors de l’opération 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 effectue une load override opération qui remplace l’intégralité de la configuration candidate par la configuration chargée, puis valide la configuration candidate 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 Jinja2 Template. 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 le texte ASCII, les éléments Junos XML, les commandes Junos OS set et JSON. Vous pouvez spécifier le format des données de configuration soit en incluant explicitement le format paramètre dans la méthode utilitaire Config 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 la version 1.2 de Junos PyEZ, Junos PyEZ détecte automatiquement le format lorsque vous fournissez les données de configuration sous forme de chaîne.

Le Tableau 2 récapitule les formats pris en charge pour les données de configuration et la valeur correspondante pour l’extension de fichier et format le paramètre. Lorsque vous utilisez la mise en forme XML Junos pour les données de configuration, vous devez placer les données dans la balise de niveau <configuration> supérieur.

Note:

Vous n’avez pas besoin d’inclure des données de configuration au format texte ASCII, des commandes Junos OS set , JSON dans <configuration-text>, <configuration-set>ou <configuration-json> des balises comme requis lors de la configuration du périphérique directement dans une session NETCONF.

Tableau 2 : spécification du format des données de configuration

Format des données de configuration

Extension de fichier

format Paramètre

Texte ASCII

.conf, .text, .txt

Texte

Notation d’objet JavaScript (JSON)

.Json

Json

set Commandes Junos OS

.Ensemble

Ensemble

Eléments XML Junos

.Xml

Xml

Note:

Lorsque le overwrite paramètre ou update est défini sur True, vous ne pouvez pas utiliser le format de commande Junos OS set .

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 des données de configuration sous forme de chaînes, de fichiers, d’objets XML ou d’objets Jinja2 Template. Les fichiers peuvent contenir des extraits de données de configuration ou des modèles Jinja2.

Le Tableau 3 récapitule les load() paramètres de méthode que vous utilisez pour transmettre les données de configuration ou référencer 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 si vous utilisez des chaînes, des objets XML ou des fichiers dont le format est indiqué par l’extension de fichier. Lors de l’utilisation de modèles Jinja2, incluez le template_vars paramètre à transmettre dans le dictionnaire des variables de modèle requises.

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

Paramètre

Source de données de configuration

Description

format Exigences relatives aux paramètres

path

Fichier local

Chemin d’accès à un fichier sur le serveur de gestion des configurations local contenant des données de configuration au format texte ASCII, des éléments XML Junos, des 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

Jinja2 Objet Template

Objet Jinja2 Template préchargé.

Incluez le template_vars paramètre dans la liste des arguments de méthode load() pour référencer 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 la configuration local contenant un modèle Jinja2 formaté en texte ASCII, éléments XML Junos, commandes Junos OS set ou JSON.

Incluez le template_vars paramètre dans la liste des arguments de méthode load() pour référencer 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 le périphérique Junos ou à une URL distante accessible à partir du périphérique Junos à l’aide d’une URL FTP ou HTTP (Hypertext 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 texte ASCII, éléments XML Junos, commandes Junos OS set ou JSON.

Dans ce cas, Junos PyEZ détecte automatiquement le format des données de configuration, 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 au format texte ASCII, éléments XML Junos, commandes Junos OS set ou JSON à partir d’un fichier local ou distant.

Pour charger des 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 le périphérique Junos ou à partir d’une URL accessible à partir du périphérique Junos. Pour charger des données de configuration à partir d’un fichier sur le périphérique Junos, définissez le url paramètre sur le chemin absolu ou relatif du fichier sur le périphérique cible et incluez tous les autres paramètres requis pour l’opération de chargement. Par exemple :

Pour charger des données de configuration à partir d’un fichier à une URL distante, définissez le url paramètre sur l’emplacement FTP ou l’URL HTTP (Hypertext Transfer Protocol) d’un fichier distant et incluez tous les autres paramètres requis pour l’opération de chargement. Par exemple :

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

Si le fichier n’indique pas le format des données de configuration à l’aide de 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 load() liste des paramètres de méthode. Par exemple :

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

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

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

Les extraits de code suivants présentent des exemples de chaînes multilignes 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 pour plus de clarté. Dans les exemples, cu il s’agit d’une instance de l’utilitaire Config , qui fonctionne sur le périphérique Junos cible.

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

    Chargez les données de configuration en fournissant la chaîne comme premier argument de la liste, et 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 de la liste, et 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 de la liste, et 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 de la liste, et spécifiez format="json"éventuellement .

Charger les données de configuration formatées en tant qu’objet XML

Pour charger des données de configuration au format en tant qu’objet XML, incluez l’objet en tant que premier argument dans la liste des arguments de méthode load() et fournissez tous les autres paramètres requis. Étant donné que le format par défaut des données de configuration est XML, vous n’avez pas besoin d’inclure explicitement le format paramètre dans l’appel 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 de modèles Jinja2

Junos PyEZ prend en charge l’utilisation de modèles Jinja2 pour le rendu des 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, notamment le texte ASCII, les éléments XML Junos, les commandes Junos OS set et JSON. Junos PyEZ utilise le modèle Jinja2 et un dictionnaire de variables fourni pour restituer 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 les strophes de configuration similaires. Par exemple, plutôt que d’ajouter manuellement les mêmes instructions de configuration pour chaque interface d’un appareil, vous pouvez créer un modèle qui effectue une itération 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 entourées de '{{' et '}}'.

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

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

Pour charger le modèle Jinja2 dans le code Junos PyEZ, définissez le template_path paramètre sur le chemin d’accès du fichier de modèle, puis template_vars sur 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 format paramètre dans la load() liste des paramètres de 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 liste des arguments de template_path la load() méthode.

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

La vidéo suivante présente une courte session Python qui montre comment utiliser un modèle Jinja2 pour configurer un périphérique Junos.

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

Restaurer la configuration

Les équipements Junos stockent une copie de la dernière configuration validée et jusqu’à 49 configurations précédentes, selon la plate-forme. Vous pouvez restaurer n’importe quelle configuration stockée. Ceci est utile lorsque les modifications de configuration entraînent des résultats indésirables et que vous souhaitez revenir à une configuration de travail connue. La restauration de la configuration est similaire au processus de modification de la configuration sur l’appareil, mais au lieu de charger les données de configuration, vous effectuez une restauration, qui remplace l’intégralité de la configuration candidate par une configuration précédemment validée.

La méthode de classe rollback() Junos PyEZ jnpr.junos.utils.config.Config vous permet de restaurer la configuration sur un périphérique 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 égales à 0 (zéro, pour la configuration validée la plus récente) à une unité de moins que le nombre de configurations précédentes stockées (le maximum est de 49). Si vous omettez ce paramètre dans l’appel de méthode, la valeur par défaut est 0.

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

Pour obtenir un exemple plus complet incluant la gestion des erreurs, reportez-vous à la section Exemple : utilisation de Junos PyEZ pour restaurer la configuration.

Charger 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. Vous pouvez utiliser la configuration de secours lorsque vous devez revenir à une configuration connue ou en dernier recours si la configuration de votre routeur ou de votre commutateur et les fichiers de configuration de sauvegarde sont irréparables. Lorsque vous créez une configuration de secours, l’appareil enregistre la configuration la plus récemment validée en tant que configuration de secours.

L’utilitaire Junos PyEZ jnpr.junos.utils.config.Config vous permet de gérer la configuration de secours 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 secours. Vous spécifiez l’action à effectuer sur la configuration de sauvetage en définissant le rescue() paramètre method action sur l’opération souhaitée.

Pour charger la configuration de secours existante dans la configuration candidate, spécifiez action="reload". S’il n’existe aucune configuration de secours, l’opération de chargement renvoie False. Après avoir chargé la configuration de secours, vous devez valider la configuration pour en faire la configuration active sur l’appareil.

L’exemple suivant charge et valide la configuration de secours, s’il en existe une :

Pour plus d’informations sur la création, la récupération ou la suppression de la configuration de secours et pour obtenir d’autres exemples, reportez-vous à la section Utiliser Junos PyEZ pour gérer la configuration de secours 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’appareil. Lorsque vous utilisez l’utilitaire Config pour apporter des modifications de configuration non structurées sur un périphérique, vous validez la configuration candidate en appelant la commit() méthode.

Pour plus d’informations sur l’opération de validation et les options de validation prises en charge dans les scripts Junos PyEZ, reportez-vous à la section Utiliser Junos PyEZ pour valider la configuration.

Tableau de l’historique des modifications

La prise en charge des fonctionnalités est déterminée par la plate-forme et la version que vous utilisez. Utilisez l’Explorateur de fonctionnalités pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.

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