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,您可以在 Junos 设备上进行结构化和非结构化配置更改。用于进行配置更改的用户帐户必须有权更改每个设备上的配置的相关部分。如果未定义用户,则用户默认为 $USER

以下部分比较结构化和非结构化配置更改,并提供有关使用实用程序进行非结构化配置更改或使用表和视图进行结构化配置更改 Config 时的 Junos PyEZ 配置流程的详细信息。

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

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

在 Junos 设备上使用 Config 实用程序进行非结构化配置更改时,可以更改配置的任何部分,但是您必须为配置数据使用一种接受的格式以及该格式的正确语法。熟悉受支持的配置格式并希望选择修改配置任意部分的用户可能会偏爱此方法进行配置更改。该 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 或表对象,然后将其与 Device 对象相关联。例如:

配置对象

表对象

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

  1. 使用 lock()

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

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

  4. 使用 unlock()

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

注意:

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

如何指定配置模式

默认情况下,Junos PyEZ 会更新候选全局配置。修改配置数据库时,您还可以指定不同的配置模式。要指定非默认模式,必须使用上下文管理器 (with ... as语法) 创建Config或表对象,并将该参数设置mode为所需模式。支持的模式包括privateexclusivedynamicbatchephemeral.

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

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

注意:

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

Junos PyEZ 使您能够在支持此数据库的设备上更新 临时配置数据库 。临时数据库是一种替代配置数据库,可为在 Junos 设备上执行配置更新提供快速编程接口。

注意:

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

要打开和配置临时配置数据库的默认实例,请包括该 mode='ephemeral' 论点。例如:

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

如何指定负载操作

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

注意:

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

表 2:在负载() 和设置() 方法中指定负载操作类型的参数()

负载操作

参数

描述

首次支持的 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

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

通过 Device 该类 bind() 方法,您可以将各种实例和方法连接到实 Device 例。在 Junos PyEZ 应用程序中,可以选择将或表对象绑定 Config 到实 Device 例。这些方法的功能没有变化,但执行方法略有不同。例如:

作为独立变量:

作为绑定财产: