Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

定义 Junos PyEZ 配置表

您可定义 Junos PyEZ 配置表,以便从 Junos 设备的选定配置数据库中提取特定数据,或创建可用于编程配置 Junos 设备的结构化资源。因此,您可以快速检索或修改设备上的特定配置对象。

Junos PyEZ 表使用 YAML 格式化。定义 Junos PyEZ 配置表时,必须使用或 get set。包含该属性的 get 表只能从设备检索指定的配置数据。包括属性的 set 表定义了可用于配置设备以及从设备检索配置数据的配置资源。因此,它们是一个超集,包括表中指定 get的所有功能。

配置表定义可包含许多必需参数和可选参数。 表 1 汇总了参数并指定该参数可在仅从设备检索配置数据的表中使用 (get) 还是在可配置设备的表中使用 (set)。

表 1:Junos PyEZ 配置表参数

表参数名称

表参数

表类型

描述

表名

getset

用户定义表标识符。

配置范围

getset

XPath 表达式相对于顶级 <configuration> 元素,用于标识要选择或配置对象的配置层次结构级别,具体取决于表类型。

指定 get 检索配置对象或指定 set 配置和检索对象。

这些对象成为关联视图的参考。

配置资源关键字段

key-field

set

字符串或字符串列表,用于引用“视图”中定义的任何字段名称,该视图将映射到标识符元素,可用于唯一标识配置对象。例如,您可以指定与某个对象的元素对应的 <name> 字段名称。

您必须始终在表中至少定义一个关键字段,用户在应用程序中配置资源时必须声明所有密钥的值。

必需密钥

required_keys

getset

(可选)密钥值对的关联阵列或字典,用于将配置范围中的层次结构级别映射到在该层次结构级别上唯一标识对象的元素,例如 <name> 元素。

用户在应用程序中检索配置数据时,必须将所有必需密钥作为方法的参数 get()

表视图

view

getset

与表相关联的视图。

请考虑以下 Junos PyEZ 配置表及其关联视图。 UserTable(包括 get 属性)提取目标设备上的用户帐户的配置数据( UserConfigTable包括 set 属性)定义了一个结构化配置资源,可用于在目标设备上配置用户帐户,以及检索用户帐户的配置数据。

以下部分讨论表的不同组件:

表名

表名是表的用户定义标识符。YAML 文件或字符串可包含一个或多个表。YAML 文档的开头必须保持合理性。例如:

配置范围(获取或设置)

所有配置表定义中都需要的配置范围属性标识检索或配置对象的配置层次结构级别,具体取决于表类型。Junos PyEZ 配置表可用于检索和修改 Junos 设备上的配置数据。指定属性的 get 配置表只能检索配置数据。指定属性的 set 配置表可以配置和检索数据。

相对于顶层<configuration>元素而言,XPath 表达式的值getset用于标识检索或设置配置数据的层次结构级别。此数据将成为关联视图的参考。

考虑以下示例配置层次结构:

要在[edit system login]层次结构级别检索或配置user元素,或set属性的值get将使用以下表达式:

注意:

XPath 表达式末尾没有斜杠 (/),因为脚本会生成错误。

例如,要定义只能用于检索 user 对象的表,请使用 get

要定义除了检索对象之外还可用于配置 user 对象的表,请使用 set

默认情况下,Junos PyEZ 配置表将从候选配置数据库检索数据。当您在 Python 脚本中调用get()此方法以检索表数据时,您可以指定该方法应通过在论证中传递并包括'database':'committed'字典中的options术语来从提交的配置数据库中options返回数据。例如:

密钥字段(密钥字段)

在 Junos OS 配置中,配置对象的每个实例(例如接口或用户帐户)都必须有一个唯一标识符。在许多情况下, <name> 在 Junos XML 输出中显式显示的元素会唯一标识对象的每个实例。但是,在某些情况下,会使用不同的元素或元素组合。例如,逻辑接口通过物理接口名称和逻辑单元编号的组合来唯一标识。

指定 set 属性以定义配置资源的配置表必须指示该资源唯一标识的元素或元素组合。该 key-field 属性是字符串或字符串列表,用于此功能,并且是所有 set 配置表所必需的。

表视图 set 必须明确定义配置资源的所有标识元素的字段。然后,属性 key-field 必须引用表定义中的标识符元素的所有字段名称。使用表配置资源时,Junos PyEZ 应用程序必须为所有关键字段提供值。

例如,下表定义了结构化资源,可用于在 [edit system login] 层次结构级别上配置用户帐户。View 明确定义该字段, username 并将其映射到 name 层次结构级别的 [edit system login user] 元素。属性 key-field 引用此字段以指示该 name 元素唯一标识该对象的实例。

当 Junos PyEZ 应用程序配置设备上的资源实例 UserConfigTable 时,必须为 username 每个实例定义密钥的值。例如:

如果配置表定义了在每个级别具有标识符的多个层级语句的字段,则 key-field 属性必须包含所有标识符。例如,如果表在接口上配置了逻辑单元,则 key-field 属性必须将接口名称和逻辑单元编号都包括为密钥。

必需密钥(required_keys)

配置表定义中包含可选required_keys属性,要求表用户在检索应用程序中的数据时为一个或多个密钥提供值。每个密钥都必须将配置范围中由或set参数定义的get层次结构级别映射到该级别的<name>标识符。每个层次结构级别只能定义一个关键。

在以下示例中,UserTable要求 Junos PyEZ 应用程序在检索数据时指定层次结构级别的[edit system login user]元素值name

在相应的 Junos PyEZ 脚本中,您必须在方法论证列表中 get() 包含所需密钥。以下示例会请求名为“readonly”的用户的配置数据:

您只能要求在由或set参数定义的配置范围的层次结构级别中使用get密钥。考虑以下定义get

在这种情况下,您可以要求用户提供以下示例代码中所示的接口名称和单元编号的值,但是您无法定义接口地址所需的密钥,该密钥的层次结构较低:

表视图(视图)

view 属性将表定义与特定视图相关联。视图使用 XPath 表达式将用户定义的字段名称映射到所选表项中的元素。您可以自定义 View,仅选择要检索或配置的某些元素,具体取决于表的类型和操作。

有关定义配置表视图的详细信息,请参阅 Junos PyEZ 配置表的定义视图