Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Utiliser les tables de configuration Junos PyEZ pour configurer des ressources structurées sur des équipements Junos

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

Processus de configuration générale

La propriété table set de configuration identifie le niveau hiérarchique 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 vérifications 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 moins que la vue ne définisse 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 qui pourraient être généré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é Table, qui dans cet exemple est username.

Le code suivant importe et configure des UserConfigTable valeurs pour les usernamechamps , userclasset password . Le champ de la vue fait référence à l' password encrypted-password instruction dans la configuration ; par conséquent, les données doivent 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 de forme fixe 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 correspondant à un attribut XML Junos, reportez-vous aux sections suivantes :

Une fois que vous avez configuré un objet, vous devez appeler la append() méthode pour générer la configuration XML Junos correspondante et l’ajouter à l’objet lxml qui stocke le jeu principal de modifications de configuration pour cet objet Table. Les modifications apportées à la configuration incluent uniquement les champs pour lesquels une valeur par défaut est 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 la création du XML, la append() méthode réinitialise également tous les champs à leurs valeurs par défaut ou à None ce 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 ultérieures. Chaque fois que vous configurez une nouvelle ressource, vous devez appeler append() pour ajouter les modifications de configuration à l’ensemble principal de modifications. Pour plus d’informations sur la append() méthode, consultez Utiliser append() pour générer les données de configuration XML 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 leur valeur par défaut 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. Cela n’affecte pas le XML contenant les modifications de configuration qui ont été construites jusqu’à ce point par les appels à la append() méthode.

Vous pouvez récupérer la configuration XML représentant vos modifications à tout moment dans 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 et appelé append()nécessaires, vous pouvez charger vos modifications de configuration dans la base de données de configuration partagée sur l’appareil à l’aide de l’une des deux méthodes suivantes :

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

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

Note:

Lorsque vous créez l’instance Table avec un gestionnaire de contexte (with ... as syntaxe) qui inclut le paramètre permettant d’utiliser un mode de configuration spécifique, le gestionnaire de contexte gère l’ouverture mode 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 de la 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 devrez également 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, consultez Utiliser Junos PyEZ pour configurer des équipements Junos et Utiliser Junos PyEZ pour valider la configuration.

Dans le cas d’opérations de chargement 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 set() liste des arguments ou commit() de la méthode. Pour plus d’informations, reportez-vous à la section Comment contrôler l’intervalle de délai d’expiration RPC.

Une table de configuration qui spécifie le set paramètre est un sur-ensemble 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 la table 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 Utiliser les tables de configuration Junos PyEZ pour récupérer les données de configuration.

Configurer des instructions constitué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 sont constituées d’un mot-clé de forme fixe uniquement, 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 Junos XML 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, sur la valeur booléenne True.

Prenons l’exemple de 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 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 encadrer toutes les valeurs d’une seule instruction, comme dans ce qui suit :

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 (telle que définie dans la vue) sur une liste Python contenant les valeurs souhaitées. Dans l’exemple suivant, le vlan_list champ correspond à l’instruction vlan-id-list de l’interface de ligne de commande. Pour configurer l’instruction avec plusieurs ID de VLAN, définissez un nom de champ égal à la liste des ID.

Note: 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 Junos.

Configurer plusieurs instances de la 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 de l’interface de bouclage sont configurées au niveau de la [edit interfaces lo0 unit 0 family inet] hiérarchie :

La représentation Junos XML 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 sur 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 un ip_address champ égal à une liste d’adresses.

La configuration résultante est la suivante :

Configurer 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 le jeu maître de 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 si None un champ n’a pas de valeur par défaut définie.

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

Note:

Si vous n’appelez pas la append() méthode après avoir configuré l’un des nombreux objets pour la même ressource, les valeurs de champ du deuxième objet remplacent 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'}. Vous devez toujours définir des valeurs pour tous les champs clés lors de la suppression d’une instruction conteneur ou leaf afin d’indiquer à quel objet la suppression s’applique.

Considérez le tableau et la vue de configuration de Junos PyEZ suivants :

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 uid pour l’utilisateur jsmith:

Pour supprimer un conteneur de la configuration, la vue doit définir un champ pour ce conteneur. Dans l’exemple Table et vue, l’étendue 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 à l’intérieur du 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'}, puis 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 Junos XML renvoyées par la get_table_xml() méthode. L'élément user avec l'identificateur 'jsmith' inclut l operation="delete" 'attribut pour demander à Junos OS de supprimer cet objet de la configuration.

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

Certaines commandes de mode de configuration, par exemple deactivate ou protect, appliquent ou suppriment une propriété spécifique, telle que la propriété inactive ou protect, à une instruction de configuration. Dans l’interface de ligne de commande, cette propriété est signalé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 l’interface de ligne de commande, la inactive balise précède le nom de l’interface.

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

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

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 Junos XML 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 Affichage correspondant à l’objet inactif sur {'active':'active'}.

De même, pour protéger l’élément de configuration ou supprimer l’attribut d’un protect é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 Junos XML Management Protocol .

Utilisez append() pour générer les données de configuration XML 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 le jeu maître de 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 apportées à la configuration n’incluent que les champs pour lesquels une valeur par défaut est 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 la création du XML, la append() méthode réinitialise également tous les champs à leurs valeurs par défaut, telles que définies dans la vue, ou si None 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 une valeur de champ pour un objet, puis n’utilisez pas involontairement cette valeur lors d’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().

Note:

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 principal des modifications de configuration. Vous devez appeler explicitement la méthode ou les set() load() méthodes et commit() pour charger et valider les modifications sur l’appareil.

Affichez les modifications apportées à la 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 le jeu maître de modifications de configuration. Parfois, vous devrez peut-être examiner les données de configuration qui ont été créées jusqu’à un certain point dans l’application, ou vous souhaiterez peut-être afficher les différences entre les configurations candidates et actives après avoir chargé vos modifications de configuration sur l’appareil.

Pour récupérer les données de configuration Junos XML 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 méthode ou les set() load() méthodes et commit() , l’application charge et valide ces données de configuration XML Junos sur le périphérique.

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, celle-ci retourne None.get_table_xml() 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 candidates et actives 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 sur la sortie standard.

Comment contrôler l’intervalle de délai d’expiration 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 et commit() utilisent la valeur du 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 importantes apportées à la configuration peuvent dépasser la valeur par défaut ou le délai d’expiration configuré, ce qui entraîne l’expiration de l’opération 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’expiration par défaut ou configuré, définissez l’argument timeout=seconds sur une valeur appropriée lorsque vous appelez la set() méthode or commit() dans votre application. Par exemple :