Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

创建并执行 Ansible 操作指南来管理 Junos 设备

您可以创建执行瞻博网络模块的 Ansible 操作指南,从而在运行 Junos OS 的设备和运行 Junos OS Evolved 的设备上执行操作和配置任务。

瞻博网络提供 Ansible 模块,让您能够在 Junos 设备上执行操作和配置任务。本主题概述如何创建简单的 Ansible 操作指南,以便在 Junos 设备上执行瞻博网络模块。

剧本概述

您可以创建 Ansible 指南来处理更复杂的管理任务。操作指南由一个或多个 play 或任务组组成,这些操作在一组已定义的主机上运行。每个剧本必须指定:

  • 执行任务的主机

  • 要在每个主机上执行的任务列表

  • 任何必需的变量或模块参数,包括身份验证参数(如果尚未在其他地方定义这些参数)

操作指南引用的任何 Ansible 主机都必须在 Ansible 清单文件中定义。Ansible 清单文件的默认位置为 /etc/ansible/hosts

playbook 通过调用模块在主机上执行任务。瞻博网络 Ansible 模块通过该集合进行 juniper.device 分发,该集合托管在 Ansible Galaxy 上。要在操作指南中使用瞻博网络模块,必须在 Ansible 控制节点上安装集合。有关集合和模块的更多信息,请参阅 了解适用于 Junos OS 的 Ansible 集合和模块

瞻博网络模块不需要 Junos 设备上的 Python,因为它们使用 Junos XML API 和 NETCONF 与设备交互。因此,要在 Junos 设备上执行操作,您必须在安装了 Python 的 Ansible 控制节点上本地运行模块。您可以通过定义相应的 Ansible 连接和网络操作系统参数在本地运行这些模块。有关集合中 juniper.device 模块的连接参数和值的信息,请参阅如何在 Junos 设备上执行模块

默认情况下,Ansible 会自动从远程主机收集系统事实。但是,当您在本地执行 Play 时,Ansible 会从 Ansible 控制节点而不是远程主机收集事实。为避免收集控制节点的事实,请包含在 gather_facts: no playbook 中。

使用通过 SSH 的 NETCONF 会话执行瞻博网络模块时,Junos 设备必须启用 NETCONF。我们建议您在操作指南中创建一个简单的任务,在执行其他任务之前,该任务会显式测试每台设备上是否启用了 NETCONF。如果任何主机的此任务失败,默认情况下,Ansible 不会为此主机执行其余任务。如果不进行此测试,您可能会在 playbook 执行期间收到一个通用连接错误,该错误不会指示此问题或其他问题是导致任何故障的原因。

您可以编写 YAML 格式的剧本。YAML 对空格敏感,缩进很重要。因此,您的剧本应始终使用空格而不是制表符。在 YAML 中,连字符 (-) 前面的项是列表项, key: value 表示法表示哈希值。有关创建 Ansible 操作指南的详细信息,请参阅 https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html 上的 Ansible 官方文档。

创建 Ansible 剧本

开始之前:

  • 选择用于管理 Junos 设备的模块集。该 juniper.device 集合包括 juniper.device 原始模块和 junipernetworks.junos 模块。

  • 使用适合您的模块集的 Ansible 连接和网络操作系统变量更新清单文件,如 在管理 Junos 设备时了解 Ansible 清单文件中所述。

要创建简单的操作指南以在 Junos 设备上执行任务,请执行以下操作:

  1. 在您最喜欢的编辑器中,创建一个新文件,其中包含使用 .yaml 文件扩展名的描述性 playbook 名称。
  2. 包括三个破折号以指示 YAML 文档的开头。
  3. 为该剧提供描述性名称。
  4. 定义一个以逗号分隔(或冒号分隔)的主机或主机组的列表,其中将运行模块;指定 all 以指示清单文件中的所有主机。

    Ansible 清单文件必须定义您在操作指南中引用的任何主机或主机组。

  5. (可选)include gather_facts: no 以防止对目标主机进行事实收集,对于本地连接,该主机是 Ansible 控制节点。
  6. (可选)引用集合。

    您可以在操作指南中定义 collections 密钥,然后在任务中仅引用模块名称。但是,建议的方法是省 collections 略密钥,而是通过其完全限定的集合名称 (FQCN) 引用集合内容。

    此示例省 collections 略键并使用完全限定的集合名称。

  7. 定义任务部分,并将一个或多个任务作为列表项包含在内。
  8. (可选)作为对通过 SSH 进行的 NETCONF 会话的额外检查,请创建一个任务来验证每个 Junos 设备的 NETCONF 连接。
  9. 创建使用瞻博网络模块的任务,并提供任何必要的连接和身份验证参数。

    此示例使用在 SSH 密钥代理中加载的 SSH 密钥,并且不会在操作指南中显式提供模块的 facts 凭据。

  10. (选答)根据需要定义附加任务或附加操作。

执行剧本

此示例中的操作指南使用以下 Ansible 清单文件,该文件将连接定义为 local

要执行该剧本,请执行以下步骤:

  • 在控制节点上发出 ansible-playbook 命令,并提供 playbook 路径和任何必需的选项。