Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

了解适用于 Junos OS 的 Ansible 集合和模块

总结 瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。

了解用于管理 Junos 设备的 Ansible 集合和模块

Ansible 是用于基础架构配置管理的 IT 自动化框架。您可以使用 Ansible 模块(离散的代码单元)在托管节点上执行特定功能。您可以在远程主机上执行单个模块来执行临时任务,也可以通过操作指南执行模块。

Ansible 和瞻博网络提供了可用于管理 Junos 设备的 Ansible 模块。瞻博网络 Ansible 模块通过托管在 Ansible Galaxy 存储库中的 Ansible 集合进行分组和分发。 表 1 概述了可用于管理 Junos 设备的不同内容集。

表 1:用于管理 Junos 设备的 Ansible 内容集

内容集

描述

Ansible 版本

juniper.device 收集

用于管理 Junos 设备的集合,瞻博网络将其作为开源项目提供和管理。

Ansible 2.10 及更高版本

junipernetworks.junos 收集

用于管理 Junos 设备的集合,由 Ansible 提供、维护和支持。

Ansible 2.10 及更高版本

Ansible 核心模块
(已弃用)

Ansible 基本安装中包含的 Ansible 模块。

在 Ansible 2.10 中,核心模块从基础安装移到了 Ansible 的 junipernetworks.junos 集合中。

Ansible 2.1 到 Ansible 2.9

Juniper.junos 角色
(已弃用)

负责管理瞻博网络提供、维护和支持的 Junos 设备。

此角色由 juniper.device 集合取代。

Ansible 2.1 及更高版本

Ansible 角色是一组用于配置主机的任务和支持变量、文件、模板和模块。从 Ansible 2.10 开始,Ansible 支持 Ansible 内容集,这是一种用于分发 Ansible 内容的格式,但未包含在 Ansible 基础安装中。Ansible 集合可以包含更广泛的内容,包括模块、操作指南、插件和角色。Ansible 集合也有自己的存储库,可以独立于 Ansible 基础安装进行开发和发布。

在 Ansible 2.9 及更低版本中,您可以使用瞻博网络 Juniper.junos 角色中提供的模块或作为 Ansible 基本安装的一部分提供的核心模块来管理 Junos 设备。从 Ansible 2.10 开始, Juniper.junos 角色和 Ansible 核心模块将被相应的集合取代。随着瞻博网络 juniper.device 集合的引入,角色 Juniper.junos 中的模块在集合中以新名称复制,因此保留了与原始模块相同的功能和参数,但 provider 参数除外。我们建议你使用集合 juniper.device ,因为新功能只会添加到集合中。

如何在 Junos 设备上执行模块

要使用 Ansible Galaxy 存储库中托管的集合,必须先在控制节点上安装 Ansible,然后再安装集合。有关安装 juniper.device 集合的详细信息,请参阅 适用于 Junos OS 服务器的 Ansible 要求

Ansible 模块可以在托管节点上执行操作。通常,Ansible 控制节点会将模块发送到托管节点,在那里执行,然后删除。在此方案中,受管节点必须具有执行模块的能力。由于大多数 Ansible 模块都是用 Python 编写的,因此 Ansible 通常需要在托管节点上运行 Python。

但是, juniper.device 集合中的瞻博网络模块不需要在托管节点上使用 Python。与常规操作不同的是,您在 Ansible 控制节点上本地执行模块,这些模块使用 Junos PyEZ 和基于 NETCONF 的 Junos XML API 与托管节点连接。您可以通过此执行方法管理任何受支持的 Junos 设备。 图 1 展示了 Ansible 控制节点与受管 Junos 设备之间的通信。

图 1:与 Junos 设备 Ansible Communication with a Junos Device的 Ansible 通信

若要使用 juniper.device 收集模块,playbook 或命令必须:

  • 指定集合或 FQCN - 要指定集合,请在播放中包含 collections 密钥。或者,可以省略 collections 密钥,改为通过其完全限定的集合名称 (FQCN) 引用集合内容,这是推荐的方法。

  • 在控制节点上本地执行模块 - 要在本地运行 Ansible 模块,请将参数local定义为 connection ,例如,通过包含在connection: local操作指南中或包含在命令行中。--connection local

    注意:

    使用 connection: local时,Ansible 会为剧中需要连接的每个任务建立与设备的单独连接。 juniper.device 收集模块还支持 using connection: juniper.device.pyez,它仍然在本地执行模块,而是为播放中的所有任务建立与设备的单个持久连接。

  • 提供适当的连接和身份验证信息以连接到受管设备 - 有关更多信息,请参阅:

您可以使用有权访问受管理 Junos 设备的任何用户帐户来执行 Ansible 模块。执行 Ansible 模块时,将强制实施 Junos OS 用户帐户访问权限,并且为 Junos OS 用户帐户配置的类将确定权限。因此,如果用户执行将配置更改加载到设备上的模块,则该用户必须有权更改配置的相关部分。

以下 playbook 执行 juniper.device 集合的 facts 模块以检索设备事实并将其保存到文件中。该示例使用默认位置中的现有 SSH 密钥向设备进行身份验证,因此不会在操作指南中显式提供凭据。

您还可以在命令行上执行临时操作。以下命令执行 juniper.device 集合的 facts 模块,并从清单组 dc1 中的主机检索设备事实。

瞻博网络 juniper.device 集合

瞻博网络提供 juniper.device Ansible 内容集,托管在 Ansible Galaxy 网站上。该集合包括用于管理 Junos 设备的 Ansible 模块。

表 2 概述了集合中的 juniper.device 模块。在集合的初始版本中,集合模块保留与角色中 Juniper.junos 相应模块相同的功能和参数,但 provider 集合模块不支持该参数。

有关模块的最新列表、文档和使用示例,请参阅 https://ansible-juniper-collection.readthedocs.io/

表 2:juniper.device 收集模块

juniper.device 模块名称

描述

command

在 Junos 设备上执行 CLI 命令,并将输出保存在本地。

config

管理 Junos 设备的配置。

facts

从远程主机检索特定于设备的信息,包括 Junos OS 版本、序列号和硬件型号。

jsnapy

通过 Ansible 在 Python (JSNAPy) 测试中执行 Junos Snapshot Administrator。

file_copy

在本地 Ansible 控制节点和 Junos 设备之间传输文件。

ping

在 Junos 设备上执行 ping 命令。

pmtud

在 Junos 设备上执行路径 MTU 发现。

rpc

执行 Junos OS RPC。

software

安装 Junos OS 软件包并重新启动 Junos 设备。

system

在 Junos 设备上执行系统操作,包括重置、重新启动或关闭设备。

srx_cluster

为支持群集的 SRX 系列防火墙创建 SRX 系列机箱群集。

table

使用 Junos PyEZ 操作表和视图从 Junos 设备检索操作信息。