Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

示例:使用 Salt 配置运行 Junos OS 的设备

瞻博网络支持使用 Salt 管理运行 Junos OS 的设备。此示例使用 Salt 配置多个运行 Junos OS 的设备。

要求

此示例使用以下硬件和软件组件:

  • 三个运行 Junos OS 并启用 NETCONF 的 MX 系列路由器

  • 盐师具有以下要求:

    • Salt 版本 3001 或更高版本

    • 可以在运行 Junos OS 的设备上执行 ping 和执行操作

概述

此示例定义一个 Salt 状态,用于在运行 Junos OS 的目标设备上配置 BGP 对等会话。 表 1 概述了设备主机名、代理 ID 和特定于设备的文件。

表 1:设备信息

主机 名

代理编号

代理配置文件

(/SRV/pillar)

BGP 数据文件

(/srv/pillar/bgp)

R1

R1

R1-proxy.sls

r1.sls

R 2

R 2

R2-proxy.sls

r2.sls

R3

R3

R3-proxy.sls

r3.sls

该示例使用以下组件:

  • Jinja2 配置模板 — 使用命令格式将 set BGP 配置定义为 Jinja 模板。模板使用 .set 文件扩展名来指示格式。

  • 支柱文件 - 定义 Jinja2 模板所需的特定于设备的配置数据。每个设备的数据都存储在 Salt 主服务器上 / srv/pillar/bgp 目录下的单独文件中。

  • 支柱顶部文件 - 将每个支柱文件映射到相应的代理工作节点。

  • 状态文件 - 定义要应用于目标设备的状态。在这种情况下,状态文件使用该函数将 junos.install_config BGP 配置应用于设备。

  • 状态顶部文件 - 将状态文件映射到应应用状态的设备。

在此示例中,您将创建一个 Jinja2 模板来生成在设备上加载和提交的 BGP 配置。该模板在变量中替换特定于设备的配置数据,以便可以根据需要重复使用这些数据。模板文件放置在 Salt 主服务器上的 / srv/salt/configs 目录下。

然后,为每个设备创建单独的 pillar 文件,并在文件中定义特定于设备的配置数据。每个 pillar 文件定义一个 BGP_data 键,其中包含配置模板中引用的所有变量参数。pillar top 文件将每个 pillar 文件映射到其各自的代理工作节点。将数据存储在支柱中可确保每个代理工作节点只能访问该设备的数据。

junos_bgp_config.sls 状态文件定义一个状态,该状态使用该函数在junos.install_config模板中应用 BGP 配置。调用时,该函数将锁定配置数据库,加载特定于目标设备的配置,提交配置,然后解锁数据库。该函数包括用于diffs_file将配置差异存储在代理工作节点服务器上的文件中的参数。文件名使用粒度为id输出文件生成特定于设备的文件名。

状态顶级文件将 junos_bgp_config 状态应用于具有任何值的支柱键的任何 BGP_data 工作节点。当您运行高状态或将该状态应用于设备时,Salt 使用模板和支柱数据生成特定于目标的配置,然后调用函数以 junos.install_config 在设备上加载并提交配置。如果已应用配置, junos.install_config 则函数不会重新应用配置。

配置设备后,可以应用junos_bgp_verify_peers状态。此状态在每个get-bgp-neighbor-information设备上执行 RPC,直到它为该设备的支柱数据中定义的每个对等方返回peer-stateEstablished值或超时。此状态假定设备上正在运行 BGP。

配置

要使用 Salt 配置设备,请执行本节中包含的任务。

定义支柱数据

分步过程

要定义与 Jinja2 模板一起使用以生成 BGP 配置的支柱数据,请执行以下操作:

  1. 在 Salt 主服务器上,为每个受管设备创建一个名为 / srv/pillar/bgp/hostname.sls 的单独文件。

  2. r1.sls 文件中定义主机 r1 的数据。

  3. r2.sls 文件中定义主机 r2 的数据。

  4. r3.sls 文件中定义主机 r3 的数据。

  5. 在支柱顶部文件中,将支柱文件与相应设备 ID 下的 BGP 数据映射,以使设备能够访问数据。

  6. 刷新支柱数据。

定义 Jinja2 模板

分步过程

要创建用于生成 BGP 配置的 Jinja2 模板,请执行以下操作:

  1. 在 Salt 主节点上创建一个名为 / srv/salt/configs/junos-config-bgp-template.set 的文件。

  2. 将 BGP 配置模板添加到文件并保存。

定义状态

定义配置状态文件

要定义应用配置的状态文件,请执行以下操作:

  1. 在 Salt 主节点上创建一个名为 / srv/salt/junos_bgp_config.sls 的文件。

  2. 定义一个状态,该状态使用该函数在 junos.install_config 模板中应用 BGP 配置。

    注意:

    如果模板仅包含 Salt 内部变量(如支柱数据、粒度数据和函数),则可能需要定义template_vars: Truejunos.install_config函数才能呈现模板。

  3. 在顶部文件中,定义应用 junos_bgp_config 状态的目标。目标包括定义了 BGP_data 支柱项目的所有设备。

定义 BGP 验证状态文件

要定义验证 BPG 对等方是否具有 peer-state 的状态 Established

  1. 在 Salt 主节点上创建一个名为 / srv/salt/junos_bgp_verify_peers.sls 的文件。

  2. 定义一个状态,该状态使用该 junos.rpc 函数执行 RPC, get-bgp-neighbor-information 然后检查 RPC 回复中是否有 peer-state Established

结果

执行高状态时,文件中的状态 top.sls 将应用于相应的目标设备。

验证

验证 BGP 配置

目的

验证是否已为每个邻居地址建立 BGP 会话。

行动

junos_bgp_verify_peers 状态应用于目标设备并查看输出。

意义

状态文件要求每个对等方的 等于peer-stateEstablished。输出指示每个设备上的所有对等方都满足此条件。或者,您可以使用该junos.cli函数在设备上执行show bgp summary命令并查看输出以验证是否已为每个邻居地址建立 BGP 会话。

故障 排除

排查配置加载错误

问题

Salt 主节点生成一个 ConfigLoadError 错误,指示由于语法错误,它无法在设备上加载配置。

解决 方案

Salt 使用 Jinja2 模板和为该设备定义的支柱数据呈现 Junos OS 配置。当 Jinja2 模板生成无效配置时,Salt 会生成语法错误。若要更正此错误,请更新 Jinja2 模板以更正错误消息中的键标识 bad_element 的元素。