Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Exemple : Utilisation de Junos PyEZ pour charger des données de configuration à partir d’un fichier

La bibliothèque Junos PyEZ vous permet d’effectuer des tâches opérationnelles et de configuration sur les équipements Junos. Cet exemple utilise l’utilitaire Junos PyEZ jnpr.junos.utils.config.Config pour charger des données de configuration à partir d’un fichier local sur le serveur de gestion de la configuration sur un périphérique Junos.

Exigences

Cet exemple utilise les composants matériels et logiciels suivants :

  • Serveur de gestion de la configuration exécutant Python 3.5 ou version ultérieure et Junos PyEZ version 2.0 ou ultérieure

  • Équipement Junos sur lequel NETCONF est activé et compte d’utilisateur configuré avec les autorisations appropriées

  • Paire de clés publique/privée SSH configurée pour l’utilisateur approprié sur le serveur et le périphérique Junos

Aperçu

Cet exemple présente une application Python qui utilise l’utilitaire Junos PyEZ Config pour activer un nouveau script op dans la configuration de l’appareil spécifié. Le fichier junos-config-add-op-script.conf , qui se trouve sur le serveur de gestion de la configuration, contient les données de configuration correspondantes au format texte ASCII.

L’application Python importe la Device classe, qui gère la connexion avec le périphérique Junos, la classe, qui est utilisée pour apporter des modifications de configuration non structurées sur le périphérique cible, et les Config exceptions requises du module, qui contient les exceptions rencontrées lors de la jnpr.junos.exception gestion des périphériques Junos. Cet exemple lie l’instance Config à l’instance Device plutôt que de créer une variable autonome pour l’instance de la Config classe.

Après avoir créé l’instance Device de l’équipement cible, la open() méthode établit une connexion et une session NETCONF avec l’appareil. Les Config méthodes utilitaires verrouillent ensuite la configuration candidate, chargent les modifications de configuration dans la configuration candidate en tant qu’opération load merge , valident la configuration candidate, puis la déverrouillent.

Le load() paramètre method path est défini sur le chemin d’accès au fichier de configuration. Étant donné que l’extension du fichier de configuration indique le format des données de configuration, le format paramètre est omis de la liste des arguments. Le paramètre merge=True indique que l’appareil doit effectuer une load merge opération.

Une fois les opérations de configuration terminées, l’application appelle la close() méthode pour mettre fin à la session et à la connexion NETCONF. L’application inclut du code pour la gestion des exceptions, telles que LockError les erreurs qui se produisent lors du verrouillage de la configuration et CommitError les erreurs qui se produisent pendant l’opération de validation. L’application inclut également du code pour gérer toutes les exceptions supplémentaires qui pourraient se produire.

Configuration

Créer le fichier de données de configuration

Procédure étape par étape

Pour créer le fichier de données de configuration utilisé par l’application Junos PyEZ :

  1. Créez un fichier avec l’extension appropriée en fonction du format des données de configuration, qui dans cet exemple est du texte ASCII.

  2. Incluez les modifications de configuration souhaitées dans le fichier, par exemple :

Création de l’application Junos PyEZ

Procédure étape par étape

Pour créer une application Python qui utilise Junos PyEZ pour apporter des modifications de configuration sur un périphérique Junos :

  1. Importez tous les modules, classes et objets requis.

  2. Incluez toutes les variables requises, ce qui, dans cet exemple, inclut le nom d’hôte de l’équipement géré et le chemin d’accès au fichier contenant les données de configuration.

  3. Créez une définition de fonction et un main() appel de fonction, puis placez les instructions restantes dans la définition.

  4. Créez une instance de la Device classe et fournissez le nom d’hôte et tous les paramètres requis pour cette connexion spécifique.

    Ouvrez ensuite une connexion et établissez une session NETCONF avec l’appareil.

  5. Liez l’instance Config à l’instance Device .

  6. Verrouillez la configuration.

  7. Chargez les modifications de configuration et gérez les erreurs éventuelles.

  8. Validez la configuration.

  9. Déverrouillez la configuration.

  10. Mettez fin à la session NETCONF et fermez la connexion avec l’appareil.

Résultats

Sur le serveur de gestion de la configuration, examinez la demande terminée. Si l’application n’affiche pas le code prévu, répétez les instructions de cet exemple pour corriger l’application.

Exécuter l’application Junos PyEZ

Exécuter l’application

  • Sur le serveur de gestion de la configuration, exécutez l’application.

Vérification

Vérification de la configuration

But

Vérifiez que la configuration a été correctement mise à jour sur l’équipement Junos.

Action

Connectez-vous à l’équipement Junos et affichez la configuration, l’historique des validations et les fichiers journaux pour vérifier la configuration et la validation. Par exemple :

Sens

La configuration et le contenu du fichier journal indiquent que les instructions de configuration correctes ont été correctement configurées et validées sur l’appareil.

Dépannage

Résoudre les erreurs de délai d’expiration

Problème

Le code Junos PyEZ génère un message RpcTimeoutError ou un message TimeoutExpiredError et ne parvient pas à mettre à jour la configuration du périphérique.

Le délai d’expiration par défaut d’un RPC NETCONF est de 30 secondes. Des modifications importantes de configuration peuvent dépasser cette valeur, ce qui entraîne l’expiration de l’opération avant que la configuration puisse être téléchargée et validée.

Solution

Pour prendre en charge les modifications de configuration qui peuvent nécessiter un temps de validation plus long que l’intervalle de délai d’expiration par défaut, définissez l’intervalle de délai d’expiration sur une valeur appropriée et réexécutez le code. Pour configurer l’intervalle, définissez la Device timeout propriété sur une valeur appropriée ou incluez l’argument timeout=seconds lorsque vous appelez la commit() méthode pour valider les données de configuration sur un périphérique. Par exemple :

Résoudre les erreurs de verrouillage de configuration

Problème

Le code Junos PyEZ génère un message LockError indiquant que la configuration ne peut pas être verrouillée. Par exemple :

Une erreur de verrouillage de configuration peut se produire pour les raisons suivantes :

  • Un autre utilisateur dispose d’un verrou exclusif sur la configuration.

  • La base de données de configuration partagée contient des modifications non validées.

  • L’utilisateur qui exécute le code Junos PyEZ n’est pas autorisé à configurer l’équipement.

Solution

Si un autre utilisateur dispose d’un verrou exclusif sur la configuration ou a modifié la configuration, attendez que le verrou soit libéré ou que les modifications soient validées, puis exécutez à nouveau le code. Si la cause du problème est que l’utilisateur ne dispose pas des autorisations nécessaires pour configurer le périphérique, exécutez l’application avec un utilisateur disposant des autorisations nécessaires ou, le cas échéant, configurez le périphérique Junos pour qu’il accorde à l’utilisateur actuel les autorisations nécessaires pour effectuer les modifications.

Résoudre les erreurs liées aux changements de configuration

Problème

Le code Junos PyEZ génère un message ConfigLoadError indiquant que la configuration ne peut pas être modifiée en raison d’un problème d’autorisations.

Ce message d’erreur peut être généré lorsque l’utilisateur exécutant le code Junos PyEZ est autorisé à modifier la configuration, mais n’est pas autorisé à modifier la partie souhaitée de la configuration.

Solution

Exécutez l’application avec un utilisateur disposant des autorisations nécessaires ou, le cas échéant, configurez le périphérique Junos de manière à ce qu’il accorde à l’utilisateur actuel les autorisations nécessaires pour effectuer les modifications.