Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

将 Ansible 与 Junos PyEZ 表结合使用,从 Junos 设备检索操作信息

总结 使用 Ansible 操作指南中的 Junos PyEZ 表和视图从 Junos 设备检索操作信息。

模块概述

Junos PyEZ 操作 (op) 表提供了一种从复杂操作命令输出中提取信息的简单有效方法。瞻博网络提供了一个 Ansible 模块,使您能够利用 Ansible 操作指南中的 Junos PyEZ 操作表。 表 1 概述了该模块。

表 1:Junos PyEZ 表模块

内容集

模块名称

juniper.device 收集

table

注意:

table 模块不支持使用配置表和视图。

了解 Junos PyEZ 表

Junos PyEZ 是一个用于 Python 的微框架,可用于管理和自动化 Junos 设备。Junos PyEZ 支持使用简单的 YAML 定义(称为 视图)来检索和过滤来自 Junos 设备的操作命令输出和配置数据。

Junos PyEZ 操作 (op) 表从操作命令或 RPC 的输出中提取信息。Junos PyEZ jnpr.junos.op 模块包含某些常见 RPC 的预定义表和视图定义。您还可以创建自定义表和视图。

当您使用 Ansible 管理 Junos 设备时,模块 table 可以使用 Junos PyEZ 表从设备检索数据。该模块可以引用 Junos PyEZ 发行版中包含的预定义操作表和视图,也可以引用驻留在 Ansible 控制节点上的用户定义的表和视图。

有关 Junos PyEZ 表和视图的常规信息,请参阅 《Junos PyEZ 开发人员指南》中的以下部分和相关文档:

如何将瞻博网络 Ansible 模块与 Junos PyEZ 表搭配使用

juniper.device.table 模块可以包含以下参数来指定要使用的表:

  • file- 定义 Junos PyEZ 表和视图的 YAML 文件的文件名。

  • path—(可选)包含包含“表”和“视图”定义的 YAML 文件的目录的路径。缺省文件路径是预定义的 Junos PyEZ 操作表的位置,这些表位于 jnpr/junos/op 目录下的 Junos PyEZ 安装路径中。

  • table—(可选)将用于检索数据的表的名称。仅当文件包含多个表定义或文件包含名称中不包含“表”的单个表时,才需要此选项。

例如,以下任务使用名为 FPCTable的自定义表检索数据,该表在 playbook 目录中的 fpc.yaml 文件中定义:

模块的响应包括 resource 键,该键包含表返回的项列表。每个列表项都是一个字典,其中包含 View 定义的字段名称以及从每个相应字段的数据中提取的值。

请考虑 Junos PyEZ 发行版的 arp.yml 文件中的以下预定义表和视图 ArpTable ArpViewArpTable 使用<no-resolve/>选项执行 <get-arp-table-information> RPC,该选项等同于 show arp no-resolve CLI 命令。相应的视图会提取响应中每个<arp-table-entry>项目的 MAC 地址、IP 地址和接口名称。

以下 Ansible 操作指南将执行该table模块,该模块用于ArpTable从 Junos 设备检索地址解析协议 (ARP) 信息。由于包含在 Junos PyEZ 发行版中,并且位于预定义 Junos PyEZ 操作表的默认目录中,因此ArpTablepath不需要 module 参数来指定文件位置。此外,由于ArpTable是文件中定义的唯一表,并且其名称中包含“表”,因此table不需要参数来指定表。

为简洁起见,playbook 输出被截断,其中包含设备返回的每个 <arp-table-entry> 项的相应字段(由 ArpView 定义)。

以下 Ansible 操作指南利用预定义的 Junos PyEZ 操作表 OspfInterfaceTable,检索有关 Junos 设备上 OSPF 接口的信息。 ospf.yml 文件定义了多个表和视图,因此模块调用包含 table 用于指定要使用的表的参数。

指定 RPC 参数

Junos PyEZ 操作表有一个可选 args 项,用于定义该表执行的 RPC 的默认命令选项和参数。应用程序使用默认选项执行 RPC,除非用户重写默认值。在 Junos PyEZ 应用程序中,可以在调用 get() 方法时重写默认选项或将其他选项和参数传递给 RPC。

juniper.device.table 模块还允许您覆盖表中定义的默认选项,或使用参数 kwargs 将其他选项和参数传递给 RPC。该 kwargs 值是命令选项和值的字典,RPC 和执行 RPC 的设备必须支持这些选项和值。

例如,ethport.yml 文件中预定义的 Junos PyEZ 操作表EthPortTable<get-interface-information>使用media命令选项执行 RPC。默认情况下,RPC 返回与接口名称的给定正则表达式匹配的所有接口的信息。

以下 Ansible 操作指南用于EthPortTable提取有关 Junos 设备上接口的信息。kwargs参数包括 interface_name: "ge-1/0/0",它将覆盖默认值EthPortTableinterface_name,并指示模块仅检索 ge-1/0/0 接口的请求字段。

有关 Junos PyEZ 表中默认和用户提供的命令选项和参数的更多信息,请参阅 定义 Junos PyEZ 操作表使用分析结构化输出的 Junos PyEZ 操作表和视图