Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Ansible 从 Junos 设备检索事实

瞻博网络提供了 Ansible 模块,您可以使用这些模块管理 Junos 设备并在设备上执行操作和配置任务。这些模块不需要在受管设备上使用 Python,因为它们使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与设备连接。因此,当您使用 Ansible 在 Junos 设备上执行操作时,必须在控制节点上本地执行 Ansible 模块。因此,Ansible 默认从 Ansible 控制节点(而非受管节点)收集事实。

瞻博网络提供了一个模块,您可以使用该模块从 Junos 设备收集设备事实,包括活动配置。 表 1 概述了可用的模块。该模块使用 Junos PyEZ 事实收集系统来检索设备事实。有关 Junos PyEZ 事实收集系统以及返回的字典键的完整列表的详细信息,请参阅 jnpr.junos.facts

表 1:收集事实的模块

内容集

模块名称

juniper.device 收集

facts

facts 模块返回字典中的 ansible_facts.junos 设备事实。该模块还允许您将返回的数据保存在本地 Ansible 控制节点上的文件中。若要指定保存检索信息的目录,请包含 savedir 模块参数,并定义目标目录的路径。当您包含 savedir 该参数时,playbook 将为每个设备生成以下文件,其中 hostname 是从设备检索到的事实的值,该值 hostname 可能与传递给模块的主机名不同:

  • hostname-facts.json - JSON 格式的设备事实

  • hostname-inventory.xml - XML 格式的设备硬件清单

例如,以下 playbook 将检索清单组中每台设备的设备事实,并将每台设备的数据保存在 Ansible 控制节点上 playbook 目录中的单独文件中。由于操作指南在本地运行 facts 模块,因此 Ansible 默认从控制节点收集事实。该操作指南包含一个参数, gather_facts: no 以防止 Ansible 从控制节点收集事实,而是使用该 juniper.device.facts 模块从托管设备检索事实。若要向设备进行身份验证,该示例使用默认位置中的现有 SSH 密钥,因此不会在操作指南中显式提供模块的凭据 facts

默认情况下,facts模块不会返回设备配置。要返回设备的活动配置,除了设备事实之外,config_format还包括选项,并指定返回配置的格式。可接受的格式值为 'json''set''text''xml'。设备上运行的 Junos OS 版本必须支持请求的格式。

包含该 config_format 选项时, ansible_facts.junos 模块响应中的字典会在单个多行字符串中包含 config 具有指定格式配置的密钥。但是,即使操作指南包含选项 savedir ,配置数据 也不会 写入文件。

提示:

要使用 Ansible 从 Junos 设备检索配置数据并将数据保存到文件中,请使用模块 config 而不是模块 facts 。有关更多信息,请参阅 使用 Ansible 检索或比较 Junos OS 配置

下一个示例中的 playbook 将执行以下操作:

  • 检索清单组中每个设备的设备事实和活动配置

  • 将每个设备的事实和硬件库存保存在 Ansible 控制节点上 playbook 目录中的单独文件中

  • 将每个设备的配置打印到标准输出