Utiliser Junos PyEZ pour valider la configuration
Junos PyEZ vous permet d’apporter des modifications de configuration structurées et non structurées sur les équipements Junos. Après vous être connecté à l’appareil et avoir modifié la configuration, vous devez valider la configuration pour la rendre active. Cette rubrique explique comment valider la configuration et quelles options de validation sont prises en charge dans les applications Junos PyEZ.
Comment valider la configuration candidate
Lorsque vous utilisez l’utilitaire Junos PyEZ jnpr.junos.utils.config.Config pour apporter des modifications de configuration non structurées sur un équipement, vous validez la configuration candidate en appelant la méthode instance Config commit() . Par exemple :
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
from jnpr.junos.exception import ConfigLoadError, CommitError
with Device(host='router1.example.com') as dev:
with Config(dev, mode='exclusive') as cu:
try:
cu.load(path='configs/mx_config.conf', merge=True)
cu.commit()
except (ConfigLoadError, CommitError) as err:
print (err)
Pour vérifier la syntaxe de la configuration sans la valider, appelez la méthode à la commit_check() place de la commit() méthode.
cu.commit_check()
Lorsque vous utilisez les tables et vues de configuration de Junos PyEZ pour apporter des modifications de configuration structurées sur un équipement, vous validez la configuration candidate en appelant soit la set() méthode, qui appelle automatiquement les lock()méthodes , load()commit() et , unlock() soit en appelant les différentes méthodes individuellement. Par exemple :
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.set(merge=True)
De même, vous pouvez appeler les méthodes individuelles, comme dans l’exemple suivant :
from jnpr.junos import Device
from myTables.UserConfigTable import UserConfigTable
with Device(host='router1.example.com') as dev:
userconfig = UserConfigTable(dev)
# ...set the values for the configuration data...
userconfig.append()
userconfig.lock()
userconfig.load(merge=True)
userconfig.commit()
userconfig.unlock()
Si vous utilisez un gestionnaire de contexte pour créer l’objet Config ou Table et que vous définissez l’argument mode sur private, exclusive, batchdynamic, ou ephemeral, vous appelez uniquement les load() méthodes et commit() pour configurer l’appareil. Le gestionnaire de contexte gère l’ouverture, le verrouillage, la fermeture et le déverrouillage de la base de données, de sorte que les appels aux méthodes , unlock()ou set() dans l’un lock()de ces modes entraînent une exception LockError.
Spécification des options de validation
La CLI de Junos fournit des options pour l’opération de validation, telles que l’ajout d’un commentaire de validation ou la synchronisation de la configuration sur plusieurs moteurs de routage. Junos PyEZ prend en charge bon nombre de ces mêmes options de validation et certaines options supplémentaires, que vous pouvez utiliser dans votre application Junos PyEZ en incluant les arguments appropriés dans la liste d’arguments de la commit() méthode ou set() . Le Tableau 1 présente les options de validation prises en charge et fournit la commande CLI correspondante.
| Argument de l’option de validation |
Descriptif |
Commande CLI |
|---|---|---|
|
|
Consignez un commentaire pour cette opération de validation dans le fichier journal système et dans l’historique des validations de l’appareil. |
|
|
|
Exiger qu’une opération de validation soit confirmée dans un délai spécifié après la validation initiale. Sinon, revenez à la configuration précédemment validée. Définissez l’argument sur |
|
|
|
Renvoie un objet XML avec des informations détaillées sur le processus de validation. |
|
|
|
Synchronisez et validez la configuration sur les deux moteurs de routage, même si l’autre moteur de routage a des sessions de configuration ouvertes ou des modifications de configuration non validées. |
|
|
|
Ignorez les avertissements déclenchés pendant l’opération de validation. Définissez l’argument sur |
– |
|
|
Synchronisez et validez la configuration sur les deux moteurs de routage. |
|
|
|
Attendez la fin de l’opération en utilisant la valeur spécifiée comme délai d’expiration. |
– |
Commit Commentaire
Lorsque vous validez la configuration, vous pouvez inclure un bref commentaire pour décrire l’objectif des modifications validées. Pour consigner un commentaire décrivant les modifications, incluez le comment paramètre et une chaîne de message dans la liste d’arguments de la commit() méthode ou set() , selon le cas. Par exemple :
cu.commit(comment='Configuring ge-0/0/0 interface')
L’inclusion de l’argument comment équivaut à exécuter la commande de commit comment mode configuration dans la CLI. Le commentaire est consigné dans le fichier journal système et inclus dans l’historique des validations de l’appareil, que vous pouvez afficher en exécutant la show system commit commande dans la CLI.
Valider Confirmer
Pour exiger qu’une opération de validation soit confirmée dans un délai spécifié après la validation initiale, incluez l’argument confirm=minutes dans la liste d’arguments de la commit() méthode ou set() , selon le cas.
cu.commit(confirm=15)
Si la validation n’est pas confirmée dans le délai imparti, l’appareil revient automatiquement à la configuration précédemment validée et envoie un message de diffusion à tous les utilisateurs connectés. La plage autorisée est de 1 à 65 535 minutes. Vous pouvez également spécifier confirm=True d’utiliser la durée de restauration par défaut de 10 minutes. Pour confirmer l’opération de validation, appelez la commit() méthode or commit_check() .
L’opération de validation confirmée est utile pour vérifier qu’une modification de configuration fonctionne correctement et n’empêche pas l’accès de gestion à l’appareil. Si la modification empêche l’accès ou provoque d’autres erreurs, la restauration automatique de la configuration précédente permet d’accéder à l’appareil une fois la date limite de restauration écoulée. Si vous perdez la connectivité de l’équipement, vous devez utiliser la méthode Junos PyEZ open() pour rétablir la connectivité.
Détails de la validation
Vous pouvez consulter les détails de l’ensemble de l’opération de validation en incluant l’argument detail=True dans la liste des arguments de la commit() méthode ou set() . Lorsque vous incluez cet argument, la méthode renvoie un objet XML avec des informations détaillées sur le processus de validation. La valeur de retour est équivalente au contenu entouré par l’élément <commit-results> dans la sortie de la commande de la commit | display detail | display xml CLI.
from lxml import etree
...
commit_detail = cu.commit(detail=True)
print (etree.tostring(commit_detail, encoding='unicode'))
Validation, synchronisation
Si l’appareil dispose de deux moteurs de routage, vous pouvez synchroniser et valider la configuration sur les deux moteurs de routage en incluant l’argument sync=True dans la liste des arguments de la commit() méthode ou set() .
cu.commit(sync=True)
Lorsque vous incluez l’argument sync=True , l’appareil copie la configuration candidate stockée sur le moteur de routage local vers l’autre moteur de routage, vérifie l’exactitude syntaxique du candidat et la valide sur les deux moteurs de routage. Pour forcer la réussite de l’opération commit synchronize même s’il existe des sessions de configuration ouvertes ou des modifications de configuration non validées sur l’autre moteur de routage, utilisez l’argument force_sync=True qui entraîne l’arrêt par l’appareil de toutes les sessions de configuration sur l’autre moteur de routage avant de synchroniser et de valider la configuration.
cu.commit(force_sync=True)
Délai d’expiration de la validation et de la vérification de la validation
Le délai d’expiration par défaut d’un RPC est de 30 secondes. Les modifications de configuration importantes peuvent dépasser cette valeur, ce qui entraîne l’expiration d’une opération de validation ou de vérification de validation avant que la configuration puisse être téléchargée, vérifiée et validée. Pour prendre en charge les modifications de configuration qui peuvent nécessiter une vérification de validation ou un temps de validation plus long que l’intervalle de délai par défaut, incluez l’argument timeout=seconds dans la liste d’arguments commit_check()de la méthode ou set() et commit() définissez l’intervalle de délai d’expiration sur une valeur appropriée. Par exemple :
cu.commit_check(timeout=60)
cu.commit(timeout=360)
Ignorer les avertissements
Junos PyEZ lève une RpcError exception lorsque la réponse RPC contient <rpc-error> des éléments avec une sévérité d’avertissement ou plus. Dans les cas où il est nécessaire ou souhaitable de supprimer les RpcError exceptions levées en réponse à des avertissements, vous pouvez inclure le paramètre de ignore_warning la commit() méthode. Par exemple :
cu.commit(ignore_warning=True)
Pour plus d’informations sur l’utilisation du paramètre, consultez Supprimer les ignore_warning exceptions RpcError levées pour les avertissements dans les applications Junos PyEZ.