Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Junos PyEZ 配置 Junos 设备

总结 您可以使用 Junos PyEZ Config 实用程序或 Junos PyEZ 表和视图来配置 Junos 设备。

Junos PyEZ 使您能够在 Junos 设备上进行结构化和非结构化配置更改。用于进行配置更改的用户帐户必须有权更改每台设备上配置的相关部分。如果未定义用户,则用户默认为 $USER

以下各节比较了结构化和非结构化配置更改,并提供了在使用实用程序进行 Config 非结构化配置更改或使用表和视图进行结构化配置更改时 Junos PyEZ 配置过程的详细信息。

了解结构化和非结构化配置更改

非结构化配置更改包括加载格式化为 ASCII 文本、Junos XML 元素、Junos OS set 命令或 JavaScript 对象表示法 (JSON) 的静态或模板化配置数据,这些更改是使用该 jnpr.junos.utils.config.Config 实用程序执行的。相反,结构化配置更改使用 Junos PyEZ 配置表和视图来定义要配置的特定资源,例如 Junos OS 用户帐户。将表添加到 Junos PyEZ 框架时,Junos PyEZ 会动态为资源创建配置类,使您能够在设备上以编程方式配置该资源。

使用该实用程序在 Config Junos 设备上进行非结构化配置更改时,可以更改配置的任何部分,但必须对配置数据使用可接受的格式之一,并且使用该格式的正确语法。熟悉受支持的配置格式并希望选择修改配置的任何部分的用户可能倾向于使用此方法进行配置更改。该 Config 实用程序还允许您回滚到先前提交的配置或加载现有的救援配置。

另一方面,结构化配置更改要求您创建表和视图来定义特定资源,并且仅允许您在设备上配置定义的资源。定义结构化资源时,可以指定用户可以为资源配置哪些配置语句,还可以定义类型和约束检查,以确保用户为其 Junos PyEZ 应用程序中的数据提供可接受的值。创建表和视图后,可以轻松地共享和重用它们。表用户可以通过编程方式在设备上配置资源,并且用户不需要了解支持的配置格式或其语法。

表 1 总结了 Junos PyEZ 支持的两种配置更改方法。

表 1:Junos PyEZ 结构化和非结构化配置更改

配置更改类型

实用

范围

配置数据格式

其他信息

结构

表和视图

仅限于表和视图中定义的配置语句

用于进行有针对性的配置更改

不需要了解配置格式或其语法

jnpr.junos.utils.config.Config

配置的任何部分

  • 文本

  • Json

  • Junos OS set 命令

  • Junos XML

支持:

  • 从字符串、XML 对象、本地或远程文件或 Jinja2 模板加载配置数据

  • 加载救援配置

  • 将配置回滚到以前的版本

本主题讨论常规配置过程以及这两种配置方法共有的操作和元素。有关使用实用程序或表和视图执行 Config 配置更新的详细信息,请参阅特定于该配置方法的文档。

有关使用该 Config 实用程序进行非结构化配置更改的详细信息,请参阅下列主题:

有关使用配置表和视图进行结构化配置更改的详细信息,请参阅以下主题:

了解常规配置过程

Junos PyEZ 使您能够在 Junos 设备上进行配置更改。成功连接到设备后,根据首选配置方法创建 Config or Table 对象,并将其与该对象关联 Device 。例如:

配置对象

表对象

默认情况下,Junos PyEZ 会更新候选全局配置(也称为 共享配置数据库)。进行配置更改的基本过程是锁定配置数据库,加载配置更改,提交配置以使其处于活动状态,然后解锁配置数据库。使用 Junos PyEZ Config 实用程序在共享配置数据库中进行非结构化配置更改时,可以通过调用此处概述的相应实例方法来执行以下操作:

  1. 使用 lock() 锁定配置

  2. 通过执行以下操作之一修改配置:

  3. 使用 commit() 提交配置,如提交配置和使用 Junos PyEZ 提交配置中所述

  4. 使用 解锁配置 unlock()

如果使用表和视图在设备上进行结构化配置更改,则可以选择单独调用 lock()load()commit()unlock() 方法,也可以调用 set() 自动调用所有这些方法的方法。

注意:

该方法 load() 对 Table 对象和 Config 对象执行相同的功能,但根据调用该方法的对象类型提供不同的参数。

如何指定配置模式

默认情况下,Junos PyEZ 会更新候选全局配置。您还可以指定在修改配置数据库时要使用的其他配置模式。要指定默认模式以外的模式,必须使用上下文管理器(with ... as语法)创建 Config or Table 对象,并将参数设置为mode所需模式。支持的模式包括 privateexclusivedynamicbatch、 和 ephemeral

当您指定缺省模式以外的模式时,上下文管理器将处理打开和锁定以及关闭和解锁数据库。这可确保您不会无意中使数据库处于锁定状态。在这些情况下,只需调用 load()commit() 方法来配置设备。

以下示例使用该 configure private 模式进行配置更改:

注意:

上下文管理器处理在 privatebatchexclusivedynamic、 或 ephemeral 模式下打开和锁定配置数据库。因此,在其中一种模式下LockError调用 or lock() set() 方法会导致异常。

Junos PyEZ 允许您在支持此数据库的设备上更新 临时配置数据库 。临时数据库是一种备用配置数据库,提供用于在 Junos 设备上执行配置更新的快速编程接口。

注意:

临时配置数据库是一项高级功能,如果使用不当,可能会对设备的操作产生严重的负面影响。有关更多信息,请参阅 了解临时配置数据库

若要打开和配置临时配置数据库的默认实例,请包含参数 mode='ephemeral' 。例如:

若要打开和配置临时配置数据库的用户定义实例,请包含该 mode='ephemeral' 参数,并将该参数设置为 ephemeral_instance 实例的名称。

如何指定加载操作

在 Junos PyEZ 中,您可以使用 Junos OS CLI 中支持的许多相同加载操作来加载配置更改。通过使用表和视图进行结构化配置更改时,或者在结构化或非结构化配置更改的方法中包含load()或省略适当的参数set(),可以指定所需的加载操作。表 2 总结了每种负载操作所需的参数设置。

注意:

由于 和 load update 操作load override需要完整的配置,因此overwrite=True在使用 Tables 进行配置更改时不得使用 and update=True 参数,因为 Tables 只会修改配置中的特定语句。

表 2:用于在 load() 和 set() 方法中指定负载操作类型的参数

负载操作

参数

描述

第一个受支持的 Junos PyEZ 版本

load merge

merge=True

将加载的配置与现有配置合并。

1.0

load override

overwrite=True

将整个配置替换为加载的配置。

1.0

load patch

patch=True

从修补程序文件加载配置数据。

2.4.0

load replace (默认)

将加载的配置与现有配置合并,但将现有配置中的语句替换为在加载的配置中指定 replace: 标签的语句。如果现有配置中没有语句,则会添加已加载配置中的语句。

1.0

load update

update=True

加载完整的配置并将其与现有配置进行比较。加载的配置中不同的每个配置元素都会替换其在现有配置中的相应元素。在提交操作期间,只有受已更改配置元素影响的系统进程才能解析新配置。

2.1.0

如何将配置或表对象创建为设备实例的属性

Devicebind()方法使您能够将Device各种实例和方法附加到实例。在 Junos PyEZ 应用程序中,您可以选择将 or 表对象绑定ConfigDevice实例。方法的功能不会更改,但方法执行略有不同。例如:

作为独立变量:

作为绑定属性: