Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utilisez Junos tableaux de configuration PyEZ pour configurer les ressources structurées sur Junos appareils

Configuration de Junos PyEZ Les tableaux qui spécifient la propriété vous permettent de définir des set ressources structurées qui peuvent être utilisées pour configurer par programmation des équipements Junos. Après avoir chargé ou importé la définition de table de votre ressource structurée dans votre application Junos PyEZ, l’application peut configurer la ressource sur vos équipements. Cette rubrique décrit le processus général et certaines tâches spécifiques pour l’utilisation des tables et des vues de configuration de Junos PyEZ pour configurer les ressources structurées sur un équipement.

Processus de configuration général

La propriété Configuration Table set identifie le niveau de hiérarchie de configuration auquel une ressource est configurée et définit le contexte XPath pour les champs de la vue. Par exemple, le tableau suivant définit une user ressource au niveau de la [edit system login] hiérarchie :

Les champs inclus dans la vue définissent les instructions leaf que l’utilisateur peut configurer pour cette ressource. Un champ peut définir une valeur par défaut ainsi que des contrôles de type et de contrainte.

Pour configurer une ressource structurée sur un appareil, vous devez charger ou importer la table dans votre application. Vous créez ensuite un objet Table et l’associez à l’objet Device de l’appareil cible. Par exemple :

Pour définir des valeurs pour les instructions de configuration d’une ressource, définissez les noms de champ correspondants (tels que définis dans la vue) égaux aux valeurs souhaitées.

La valeur par défaut d’un champ est None , sauf si la vue définit explicitement une valeur par défaut pour ce champ. Si la vue définit une vérification de type ou de contrainte pour un champ, l’application doit fournir le type de données et la valeur corrects pour ce champ et, idéalement, gérer les erreurs susceptibles d’être déclenchées en cas d’échec de la vérification. Vous devez toujours définir des valeurs pour tous les champs clés déclarés key-field dans la propriété de la table, qui dans cet exemple est username.

Le code suivant importe UserConfigTable et configure les valeurs des usernamechamps , userclasset password . Le champ View fait référence à lencrypted-password'passwordinstruction dans la configuration ; les données doivent donc fournir un mot de passe pré-chiffré.

Pour plus d’informations sur des tâches de configuration plus spécifiques, telles que la configuration d’instructions avec des mots-clés fixes ou des valeurs multiples, la configuration de plusieurs instances d’une instruction ou d’une ressource, la suppression d’une instruction leaf ou container ou la configuration d’une propriété d’objet qui correspond à un attribut XML Junos, reportez-vous aux sections suivantes :

Après avoir configuré un objet, vous devez appeler la append() méthode pour créer la configuration XML Junos correspondante et l’ajouter à l’objet lxml qui stocke l’ensemble complet des modifications de configuration pour cet objet Table. Les modifications de configuration incluent uniquement les champs qui ont une valeur par défaut définie dans la vue ou une valeur configurée par l’utilisateur. Les champs qui conservent leur valeur initiale de None sont ignorés.

Après avoir créé le code XML, la append() méthode réinitialise également tous les champs à leurs valeurs par défaut ou à None si la vue ne définit pas de valeur par défaut pour ce champ. Cela vous permet de configurer plusieurs objets dans la même application et garantit que vous n’utilisez pas involontairement une valeur définie pour une ressource lorsque vous configurez des ressources suivantes. Chaque fois que vous configurez une nouvelle ressource, vous devez appeler append() pour ajouter les modifications de configuration à l’ensemble final de modifications. Pour plus d’informations sur la méthode, reportez-vous à la append() section Utiliser append() pour générer les données de configuration XML de Junos.

Si nécessaire, vous pouvez également réinitialiser manuellement tous les champs d’un objet Table en appelant la reset() méthode.

La reset() méthode restaure tous les champs à leurs valeurs par défaut ou à None si la vue ne définit pas de valeur par défaut. La reset() méthode ne réinitialise que les valeurs actuelles des champs. Elle n’affecte pas le XML contenant les changements de configuration qui a été construit jusqu’à ce point par les appels à la append() méthode.

Vous pouvez récupérer la configuration XML représentant vos modifications à n’importe quel moment de l’application en appelant la get_table_xml() méthode, qui est décrite en détail dans Afficher vos modifications de configuration.

Après avoir configuré tous les objets nécessaires et appelé append(), vous pouvez charger vos modifications de configuration dans la base de données de configuration partagée sur l’appareil en utilisant l’une des deux méthodes suivantes :

  • Appelez la set() méthode, qui appelle automatiquement les lock()méthodes , commit()load(), et unlock()

  • Appelez les lock()méthodes , load(), commit()et unlock() individuellement

Remarque :

Lorsque vous créez l’instance de table avec un gestionnaire de contexte (with ... as syntaxe) qui inclut le mode paramètre permettant d’utiliser un mode de configuration spécifique, 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. Dans ce cas, il vous suffit d’appeler les load() méthodes et commit() pour configurer l’appareil. L’appel de la lock() méthode or set() entraîne une LockError exception.

L’utilisation de la méthode unique set() offre une grande simplicité, mais l’appel des méthodes individuelles offre une flexibilité supplémentaire, par exemple lorsque vous devez appeler d’autres méthodes après avoir chargé les données de configuration, mais avant de les valider. Par exemple, vous pouvez appeler les diff() méthodes ou pdiff() pour examiner les différences de configuration après avoir chargé les données, mais avant de les valider. Vous pouvez également avoir besoin d’appeler la rollback() méthode pour réinitialiser la configuration candidate à la configuration active au lieu de la valider. Pour plus d’informations sur l’utilisation des différentes méthodes de chargement et de validation des données de configuration, reportez-vous aux sections Utilisation de Junos PyEZ pour configurer les équipements Junos et Utilisation de Junos PyEZ pour valider la configuration.

Dans le cas d’opérations de charge et de validation volumineuses susceptibles d’expirer, vous pouvez ajuster l’intervalle de délai d’expiration RPC en incluant le timeout paramètre dans la liste d’arguments de la set() méthode ou commit() . Pour plus d’informations, consultez Comment contrôler l’intervalle de délai d’expiration RPC.

Une table de configuration qui spécifie le set paramètre est un surensemble et possède toutes les fonctionnalités d’une table de configuration qui spécifie le get paramètre. Vous pouvez récupérer les données de configuration de la même manière dans votre application Junos PyEZ, que le tableau spécifie set ou get. Pour plus d’informations sur l’utilisation des tables de configuration pour récupérer les données de configuration, reportez-vous à la section Utilisation des tables de configuration Junos PyEZ pour récupérer les données de configuration.

Configuration d’instructions composées d’un mot-clé de forme fixe

Une instruction leaf est une instruction de configuration CLI qui ne contient aucune autre instruction. La plupart des instructions leaf définissent une valeur pour une caractéristique d’un objet de configuration et ont la forme suivante :

Certaines instructions leaf se composent uniquement d’un mot-clé de forme fixe, sans valeur de forme variable associée. Par exemple, l’instruction ftp au niveau de la [edit system services] hiérarchie est un exemple de mot-clé de forme fixe.

L’API XML de Junos représente ces instructions avec une balise vide.

Pour configurer un mot-clé de forme fixe dans votre application Junos PyEZ, tel que l’instruction ftp sous [edit system services], définissez la valeur du nom de champ correspondant, tel que défini dans la vue, égale à la valeur Truebooléenne .

Considérez la vue suivante, qui définit le ftp champ avec une contrainte de type pour s’assurer que la valeur du champ est une valeur booléenne :

Pour configurer le ftp champ dans votre application Junos PyEZ, définissez le champ sur True.

Configurer plusieurs valeurs pour la même instruction

Certaines instructions leaf de Junos OS acceptent plusieurs valeurs, qui peuvent être définies par l’utilisateur ou tirées d’un ensemble de valeurs prédéfinies. La notation CLI utilise des crochets pour placer toutes les valeurs entre une seule instruction, comme dans le cas suivant :

Par exemple, vous devrez peut-être configurer une liste d’ID de VLAN pour une interface trunk, comme dans la configuration suivante :

Pour configurer une instruction leaf avec plusieurs valeurs dans votre application Junos PyEZ, définissez la valeur du champ correspondant (tel que défini dans la vue) égale à une liste Python contenant les valeurs souhaitées. Dans l’exemple suivant, le vlan_list champ correspond à l’instruction vlan-id-list dans le CLI. Pour configurer l’instruction avec plusieurs ID de VLAN, définissez le nom du champ égal à la liste des ID.

Remarque : La liste Python que vous utilisez pour la valeur d’un champ dans votre application Junos PyEZ est une liste de valeurs délimitées par des virgules. Cette liste est traduite en une liste délimitée par des espaces dans les données de configuration de Junos.

Configurer plusieurs instances d’une même instruction

Dans certaines situations, la configuration de Junos OS vous permet de configurer plusieurs instances de la même instruction. Par exemple, vous pouvez configurer plusieurs adresses sous la même famille de protocoles pour une interface logique. Dans l’extrait de configuration suivant, plusieurs adresses sont configurées à l’interface de bouclage au niveau de la [edit interfaces lo0 unit 0 family inet] hiérarchie :

La représentation XML Junos de la configuration est la suivante :

Lorsque vous utilisez les tables de configuration Junos PyEZ pour gérer des ressources structurées, vous définissez des valeurs pour les instructions de configuration en définissant les noms de champ correspondants égaux aux valeurs souhaitées. Toutefois, vous ne pouvez pas définir deux fois le même champ dans votre application Junos PyEZ, car la deuxième valeur remplacera la première. Au lieu de cela, vous devez définir le champ égal à une liste de valeurs, et Junos PyEZ gère la conversion au format XML.

Considérez le tableau et la vue suivants :

L’exemple de code suivant illustre comment configurer plusieurs adresses pour l’interface de bouclage dans une application Junos PyEZ. Dans ce cas, vous définissez le ip_address champ égal à une liste d’adresses.

La configuration résultante est la suivante :

Configuration de plusieurs instances de la même ressource

Lorsque vous utilisez les tables de configuration Junos PyEZ pour configurer des ressources structurées, vous devrez peut-être configurer plusieurs objets ou enregistrements pour la même ressource. Par exemple, vous pouvez configurer plusieurs interfaces ou utilisateurs en même temps. Pour configurer plusieurs objets pour la même ressource structurée dans une application Junos PyEZ, vous devez définir les valeurs des champs d’un objet, appeler la append() méthode, puis répéter ce processus pour chaque objet suivant.

Par exemple, pour configurer plusieurs utilisateurs, définissez les valeurs de champ pour le premier utilisateur et appelez la append() méthode. Définissez ensuite les valeurs de champ pour le deuxième utilisateur et appelez la append() méthode. La append() méthode génère les données XML Junos pour la modification de configuration et les ajoute à l’objet lxml stockant l’ensemble complet des modifications de configuration. La méthode réinitialise également automatiquement tous les champs à leurs valeurs par défaut, telles que définies dans la vue, ou à None si un champ n’a pas de valeur par défaut définie.

L’exemple suivant configure deux objets utilisateur et valide les modifications :

Remarque :

Si vous n’appelez pas la append() méthode après avoir configuré l’un des plusieurs objets pour la même ressource, les valeurs de champ du deuxième objet remplaceront les valeurs de champ du premier objet.

L’exemple de code suivant configure les deux mêmes utilisateurs à l’aide d’une syntaxe plus compacte :

Supprimer des conteneurs ou des instructions leaf

Dans certains cas, vous devrez peut-être supprimer des conteneurs ou des instructions leaf dans la configuration. Lorsque vous utilisez les tables de configuration Junos PyEZ pour gérer des ressources structurées, vous pouvez effectuer cette opération dans votre application en définissant la valeur de champ appropriée sur {'operation' : 'delete'}. Lors de la suppression d’un conteneur ou d’une instruction leaf, vous devez toujours définir des valeurs pour tous les champs clés afin d’indiquer à quel objet la suppression s’applique.

Considérez la configuration de Junos PyEZ suivante Tableau et vue :

Pour supprimer une instruction leaf pour la ressource définie dans la table et la vue, définissez la valeur du champ correspondant à cette instruction sur {'operation' : 'delete'}. L’exemple suivant supprime l’instruction pour l’utilisateur uid jsmith:

Pour supprimer un conteneur de la configuration, la vue doit définir un champ pour ce conteneur. Dans l’exemple Table and View, la portée de configuration définie par la set propriété est system/login. La vue définit le champ 'user', qui correspond au system/login/user conteneur. Cette définition vous permet de supprimer des objets utilisateur, si nécessaire. Si vous ne définissez pas de champ pour le conteneur, vous pouvez uniquement supprimer des instructions dans le conteneur, mais vous ne pouvez pas supprimer le conteneur lui-même.

Pour supprimer un conteneur dans l’application Junos PyEZ, définissez la valeur du champ correspondant au conteneur sur {'operation' : 'delete'}, et définissez le champ clé pour indiquer l’objet à supprimer. L’exemple suivant supprime l’utilisateur jsmith de la configuration :

L’application imprime les données de configuration XML Junos renvoyées par la get_table_xml() méthode. L'élément utilisateur avec l'identifiant 'jsmith' inclut l operation="delete" 'attribut permettant à Junos OS de supprimer cet objet de la configuration.

Configurer les propriétés correspondant aux attributs XML Junos

Certaines commandes du mode de configuration, par exemple deactivate ou protect, appliquent ou suppriment une propriété spécifique, telle que la propriété inactive ou protected, à une instruction de configuration. Dans la CLI, cette propriété est indiquée par une balise précédant l’instruction de configuration. La configuration XML de Junos indique cette propriété à l’aide d’un attribut XML pour l’objet.

Par exemple, la commande suivante désactive l’interface donnée.

Lorsque vous affichez la configuration dans la CLI, la inactive balise précède le nom de l’interface.

De même, dans la sortie XML de Junos, l’élément <interface> de la même interface inclut l’attribut inactive="inactive" .

Configuration de Junos PyEZ Les tables vous permettent de définir les attributs XML pris en charge pour un objet lors de la configuration des ressources structurées. Considérez la configuration de Junos PyEZ suivante Tableau et vue :

Pour définir l’attribut XML d’un objet de configuration donné, définissez son champ (tel que défini par la vue) sur un dictionnaire contenant l’attribut et sa valeur. Par exemple, pour définir une interface mais la désactiver immédiatement, définissez le champ correspondant à l’élément <interface> sur {'inactive':'inactive'}. L’exemple suivant configure et désactive l’interface donnée :

L’application imprime les données de configuration XML Junos renvoyées par la get_table_xml() méthode. L'élément d'interface avec l'identifiant 'ge-1/0/2' inclut l inactive="inactive" 'attribut.

Pour activer un objet inactif, définissez le champ Vue correspondant à l’objet inactif sur {'active':'active'}.

De même, pour protéger l’élément de configuration ou supprimer l’attribut protect d’un élément protégé, définissez la valeur de champ appropriée sur {'protect':'protect'} ou {'unprotect':'unprotect'}. Pour plus d’informations sur les attributs XML dans la configuration de Junos OS, reportez-vous au Guide du développeur du protocole de gestion XML Junos .

Utilisez append() pour générer les données de configuration XML de Junos

Lorsque vous utilisez les tables de configuration Junos PyEZ pour configurer des ressources structurées, vous définissez les valeurs des champs d’une ressource, puis appelez la append() méthode. Chaque appel à la append() méthode génère les données de configuration XML Junos pour l’ensemble actuel de modifications et les ajoute à l’objet lxml qui stocke l’ensemble complet des modifications de configuration.

L’appel de la append() méthode génère les données de configuration XML Junos pour votre ressource. Les modifications de configuration n’incluent que les champs qui ont une valeur par défaut définie dans la vue ou une valeur configurée par l’utilisateur. Les champs qui conservent leur valeur initiale de None sont ignorés.

Après avoir créé le code XML, la append() méthode réinitialise également tous les champs à leurs valeurs par défaut, telles que définies dans la vue, ou à None si un champ n’a pas de valeur par défaut définie. La réinitialisation des champs garantit que lorsque vous configurez plusieurs objets dans la même application, vous ne définissez pas de valeur de champ pour un objet, puis utilisez involontairement cette valeur dans les appels ultérieurs pour append() un autre objet. Ainsi, vous devez définir de nouvelles valeurs pour tous les key-field champs pour chaque appel à append().

Remarque :

Une fois que vous avez ajouté des nœuds à l’ensemble principal de modifications de configuration, vous ne pouvez pas annuler l’opération.

La append() méthode ajoute uniquement les nouvelles modifications à l’objet lxml contenant l’ensemble complet des modifications de configuration. Vous devez appeler explicitement la ou les set() load() méthodes and commit() pour charger et valider les modifications sur l’appareil.

Afficher vos modifications de configuration

Lorsque vous utilisez les tables de configuration Junos PyEZ pour configurer des ressources structurées, vous définissez les valeurs des champs d’une ressource, puis appelez la append() méthode. Chaque appel à la append() méthode génère les données de configuration XML Junos pour l’ensemble actuel de modifications et les ajoute à l’objet lxml qui stocke l’ensemble complet des modifications de configuration. Parfois, vous devrez peut-être examiner les données de configuration qui ont été construites jusqu’à un certain point de l’application, ou vous voudrez peut-être afficher les différences entre les configurations candidate et active après avoir chargé vos modifications de configuration sur l’appareil.

Pour récupérer les données de configuration XML Junos contenant vos modifications, appelez la méthode de get_table_xml() l’objet Table. La get_table_xml() méthode renvoie la configuration XML qui a été construite jusqu’à ce point dans l’application. Lorsque vous appelez la ou les set() load() méthodes and commit() , l’application charge et valide ces données de configuration XML Junos sur l’équipement.

L’exemple suivant appelle la get_table_xml() méthode pour récupérer les modifications de configuration, puis les stocke dans la configXML variable. Avant d’appeler la append() méthode, la get_table_xml() méthode renvoie None. Ainsi, l’application ne sérialise et n’imprime les données de configuration XML que si la valeur renvoyée n’est pas None.

La get_table_xml() méthode renvoie uniquement les données XML Junos pour vos modifications de configuration. Vous pouvez également comparer les configurations candidate et active après avoir chargé les modifications de configuration sur l’appareil pour examiner les différences avant de valider les modifications.

Pour récupérer les différences, vous pouvez appeler les lock()méthodes , load(), commit()et unlock() séparément et afficher vos différences de configuration en appelant la pdiff() méthode après avoir chargé les données mais avant de les valider. La pdiff() méthode avec une liste d’arguments vide compare la configuration candidate à la configuration active et imprime la différence de format de patch directement dans la sortie standard.

Comment contrôler l’intervalle de délai d’attente RPC

Lorsque vous utilisez les tables de configuration Junos PyEZ pour configurer des ressources structurées, vous pouvez charger et valider vos modifications de configuration en appelant la méthode ou les set() load() méthodes and commit() . Les set() méthodes and commit() utilisent la valeur de délai d’expiration RPC telle que définie dans le device module. Si vous ne configurez pas de nouvelle valeur pour la Device timeout propriété, Junos PyEZ utilise la valeur par défaut de 30 secondes.

Les modifications de configuration importantes peuvent dépasser la valeur de délai d’expiration par défaut ou configurée, ce qui entraîne l’expiration du délai d’exécution avant que la configuration ne puisse être téléchargée et validée sur l’appareil. Pour prendre en charge certaines modifications de configuration qui peuvent nécessiter des temps de chargement et de validation plus longs que l’intervalle de délai d’attente par défaut ou configuré, définissez l’argument timeout=seconds sur une valeur appropriée lorsque vous appelez la set() méthode ou commit() dans votre application. Par exemple :