Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

为 Junos OS 事件配置 Salt 反应器

Salt 反应器提供了针对 Salt 事件总线上的特定事件采取措施的能力。Salt Reactor 系统监视 Salt 事件总线上的事件,并根据配置的规则触发匹配事件的操作。您可以启用 Junos 系统日志引擎(适用于 Salt),将事件从运行 Junos OS 的受管理设备发布到 Salt 事件总线。然后,您可以配置现有或自定义反应器以对这些事件采取措施。这使您能够创建事件驱动型基础架构 (EDI),以实时实现闭环自动化。

如何配置盐反应器

在使用 Salt 反应器响应 Junos OS 事件之前,必须先启用 Junos 系统日志引擎以将 Junos OS 事件发布到 Salt 事件总线,并将运行 Junos OS 的受管理设备配置为将系统日志消息发送到运行引擎的服务器。有关更多信息,请参阅 Junos Syslog Engine for Salt。启用 Junos 系统日志引擎后,您可以配置为响应某些 Junos OS 事件而自动触发的 Salt 反应器。

要配置对特定事件做出反应的反应器:

  1. 定义将触发操作的事件和相应的事件标记。

  2. 在 Salt 主服务器上创建一个或多个反应器 SLS 文件,并定义发生特定事件时要执行的操作。

  3. 在 Salt 主配置文件中,定义 reactor 选项,并将每个事件标记与一个或多个反应器文件相关联。

  4. 重新启动 Salt 主节点以应用更新的配置。

以下各节将更详细地介绍这些步骤:

如何定义事件和事件标记

Junos 系统日志引擎使用以下默认事件标记字符串将 Junos OS 事件发布到 Salt 事件总线。该标记包括目标的主机名和 Junos OS 系统日志事件名称。

要定义要从 Salt 事件总线匹配的事件标记,请指定主机名和将触发反应的事件。您可以使用星号 (*) 匹配所有主持人的活动。有关 Junos OS 系统日志消息的详细信息,请参阅 系统日志资源管理器

例如,要匹配 UI_COMMIT_COMPLETED 来自任何运行 Junos OS 的受管设备的事件,可以使用以下事件标记:

注意:

如果您通过在配置中engines配置topic参数来自定义事件代码,则匹配的事件代码必须反映相同的字段。

在 Salt 主配置文件中配置反应器时,将引用此事件标记。

如何创建反应器 SLS 文件

反应器 SLS 文件定义发生特定事件时要执行的操作。反应器SLS文件与其他Salt SLS文件相似,因为它们使用YAML格式并支持使用Jinja。通常,文件存储在单独的目录中,例如 / srv/reactor 或 / srv/salt/reactor。反应器文件可以使用事件中的数据,对 Salt 主节点或工作节点执行操作,并将状态应用于目标等。有关写入反应器文件的详细信息,请参阅官方 Salt 文档。

例如,以下反应器文件将 junos_backup_config 状态应用于目标设备。在这种情况下,目标是与事件数据中的值匹配 hostname 的代理 ID。

如何配置反应器

要配置反应器,请在 Salt 主配置文件中定义 reactor 选项。定义触发操作的事件和要执行的操作。对于要匹配并执行操作的每个事件,请将该事件的事件标记与一个或多个反应器 SLS 文件相关联。在事件总线上触发事件时,它会自动触发文件中定义的操作。

例如,每当运行 Junos OS 并配置为将系统日志事件发送到 Junos 系统日志引擎的任何受管设备发生事件时,以下UI_COMMIT_COMPLETED反应器配置将调用 junos_backup_on_commit.sls 反应器文件:

要应用反应器配置,必须使用适用于您的操作系统的命令重新启动 Salt 主服务器。例如:

示例:响应 Junos OS 提交事件

此示例演示了一个简单的 Salt 反应器,每次运行 Junos OS 的受管设备提交配置时,该反应器都会生成一个备份配置文件。

要求

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

  • 运行启用了 NETCONF 的 Junos OS 的设备

  • 盐师具有以下要求:

    • 盐版本 3001(钠)或更高版本

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

概述

此示例在每次运行 Junos OS 的受管设备提交配置时生成一个备份配置文件。该示例将 Salt Reactor 系统配置为在与事件匹配 UI_COMMIT_COMPLETED 时触发操作。此处显示了一个示例事件以供参考:

在此示例中,首先在 Salt 主服务器上启用 Junos 系统日志引擎,并将运行 Junos OS 的设备配置为将系统日志消息发送到 Salt 主服务器端口 9999。应用配置后,设备开始向 Junos 系统日志引擎发送事件,后者在 Salt 事件总线上发布这些事件。

然后创建一个反应器 SLS 文件 junos_backup_on_commit,该文件将状态 junos_backup_config 应用于由事件数据中的键值 hostname 标识的目标。相应的状态文件使用该函数执行 junos.rpc RPC, get_config 以文本格式从目标设备检索配置。然后,它将配置保存在代理工作节点服务器上参数指定的 dest 文件路径中。该 dest 参数引用 id 粒度和当前时间,以生成包含设备 ID 和时间戳的唯一文件名。

然后,通过在 Salt 主配置文件中定义 reactor 选项来配置反应器,该选项将事件标记与反应器文件相关联。重新启动 Salt 主节点以应用配置后,Salt Reactor 系统将在事件发生时调用相应的反应器文件。因此,当运行由 Salt 主站管理的 Junos OS 的设备上发生提交完成事件时,Junos 系统日志引擎会在事件总线上发布该事件,而 Salt Reactor 系统会调用反应器文件。

配置

启用 Junos 系统日志引擎

分步过程

要启用 Junos 系统日志引擎,请执行以下操作:

  1. 在 Salt 主配置文件中配置 Junos 系统日志引擎。

  2. 重新启动 Salt 主节点以应用配置,例如:

  3. 将运行 Junos OS 的设备配置为将系统日志事件转发到 Salt 主服务器上的同一端口。

创建状态文件

分步过程

要创建在应用状态时为目标节点生成备份配置文件的状态文件,请执行以下操作:

  1. 在 Salt 主服务器上,创建一个名为 / srv/salt/junos_backup_config.sls 的新状态文件。

  2. 定义检索配置并将其保存到唯一命名文件的状态。

    注意:

    如果代理 ID 和主机名不相同,则可以通过替换 {{ grains['junos_facts']['hostname'] }} {{ grains['id'] }}来引用主机名。

创建反应器文件

分步过程

要创建反应器 SLS 文件:

  1. 在 Salt 主服务器上,创建一个名为 / srv/reactor/junos_backup_on_commit.sls 的新反应堆 SLS 文件。

  2. 配置反应器文件以将状态应用于 junos_backup_config 目标。

    • 如果代理 ID 与设备主机名相同,则可以在事件数据中引用主机名作为目标。

    • 如果代理 ID 与设备主机名不同,则可以通过引用粒度的值 junos_facts:hostname 将主机名映射到代理 ID。

配置反应器

分步过程

要配置反应器:

  1. 在 Salt 主配置文件中,配置 reactor 选项并指定事件和反应器文件:

  2. 重新启动 Salt 主节点以应用配置,例如:

结果

在运行 Junos OS 的设备上提交配置时,Salt Reactor 系统会匹配事件并调用反应器。反应器将状态应用于设备,设备检索并保存配置。

验证

验证盐反应器是否正常工作

目的

当运行 Junos OS 的设备提交配置时,验证 Salt 反应器是否应用了状态并将 junos_backup_config 备份配置文件保存到代理工作节点服务器。

行动

在运行 Junos OS 的设备上提交配置后,请查看 /var/log/salt/backup-configs 代理工作节点服务器上的目录以验证是否已生成备份配置文件。

意义

配置将以文本格式保存到代理工作节点服务器上的指定文件中。