如何为 Junos OS 安装 Salt
您可以使用 Salt 版本 3001 (Sodium) 或更高版本来管理运行 Junos OS 的设备。Salt 主节点可以通过 Salt 代理工作节点管理运行 Junos OS 的设备,该工作节点可以在 Salt 主节点或单独的服务器上运行。每个受管设备必须有一个代理工作节点,每个代理工作节点大约需要 40 MB 到 100 MB 的 RAM。
一般安装过程为:
在运行 Junos OS 的每台设备上:
通过 SSH 启用 NETCONF。
配置 Salt 将用于连接到设备的用户帐户和身份验证方法。
在 Salt 主节点上:
安装 Salt 及其依赖项。
定义每个受管设备的代理配置。
启动主盐过程。
在每个 Junos 代理工作节点服务器上:
安装 Junos PyEZ 和 Python
jxmlease
yamlordereddictloader
模块。安装 Salt 及其依赖项(如果服务器独立于 Salt 主服务器)。
为每个受管设备启动 Junos 代理工作节点进程。
在 Salt 主服务器上,接受每个 Junos 代理工作节点的密钥。
(可选)启用 Junos 系统日志引擎(适用于 Salt)。
以下各节提供了运行 Ubuntu 18.04 的服务器的安装过程的每个部分的详细信息。如果您运行的是其他操作系统,请使用适用于您的操作系统的命令。我们建议使用 Python 3。
配置运行 Junos OS 的设备
Junos 代理工作节点使用 SSH 协议和标准 SSH 身份验证机制访问运行 Junos OS 的设备上的 NETCONF 服务器。要与运行 Junos OS 的设备建立 SSHv2 连接,必须确保满足以下要求:
在将建立 NETCONF 会话的每台设备上都启用了基于 SSH 的 NETCONF 服务。
客户端应用程序有一个用户帐户,可以登录到将在其中建立 NETCONF 会话的每个设备。
客户端应用程序使用的登录帐户配置了 SSH 公钥/私钥对或基于文本的密码。
客户端应用程序可以访问公钥/私钥或基于文本的密码。
如果使用 SSH 密钥向运行 Junos OS 的设备进行身份验证,但密钥尚不存在,请在代理工作节点服务器上为所需用户生成公有和私有 SSH 密钥对,并提供任何必需或所需的选项,例如:
saltuser@minion:~$ cd ~/.ssh saltuser@minion:~/.ssh$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/saltuser/.ssh/id_rsa): id_rsa_salt Enter passphrase (empty for no passphrase): ***** Enter same passphrase again: *****
要配置运行 Junos OS 的设备,请执行以下操作:
有关在运行 Junos OS 的设备上启用 NETCONF 并满足建立 SSH 会话要求的信息,请参阅 NETCONF XML 管理协议开发人员指南。
参见
设置 Salt 主节点
Salt 主节点是管理一个或多个节点或工作节点的主控制服务器。SaltStack 建议在专用管理服务器或虚拟机 (VM) 上安装 Salt 主节点。必须安装 Salt 3001 (Sodium) 或更高版本才能管理运行 Junos OS 的设备。
要安装和配置 Salt 主节点,请执行以下操作:
设置 Junos 代理工作节点服务器
您必须在管理运行 Junos OS 设备的代理工作节点服务器上安装以下软件:
盐软件
瞻博网络的 Junos PyEZ 库
jxmlease
和yamlordereddictloader
Python 模块
Junos 代理工作节点使用 Junos PyEZ 库连接到设备的 NETCONF 服务器并执行管理任务。
如果在同一台服务器上运行 Salt 主节点和 Junos 代理工作节点,则本节中的工作节点主机名将与上一节中的 Salt 主节点主机名相同。
要在 Salt 主服务器或单独的服务器上设置 Junos 代理工作节点,请执行以下操作:
代理工作节点连接到 Salt 主节点并发送其公钥。Salt 主节点必须先接受密钥,然后 Salt 主节点和代理工作节点才能进行通信。
授权 Salt 主节点上的代理工作节点密钥
Salt 使用公钥通过 Salt 主进程进行身份验证。默认情况下,Salt 主节点不授权任何工作节点或代理工作节点密钥。您必须先接受密钥,然后才能管理相应的设备。
您可以手动接受密钥,如本节所述。或者,如果您知道传入密钥不会构成安全威胁(例如,如果 salt 主进程和 salt 代理进程在同一服务器上运行),则可以在 Salt master 配置文件中包含该 auto_accept: True
选项以自动接受所有传入密钥。出于安全考虑,默认情况下禁用此选项。
要列出并接受挂起的密钥,请执行以下操作:
验证与受管设备的连接
接受 Salt 主节点上的密钥后,调用 test.ping
执行函数以通过消息总线对代理工作节点执行 ping 操作,并验证工作节点是否已启动并正在进行通信。您可以指定目标工作节点或用于 '*'
ping 所有工作节点。
以下示例对运行 Junos OS 且与 Junos 代理工作节点路由器 1 关联的设备执行 ping 操作。
saltuser@salt-master:~$ sudo salt 'router1' test.ping router1: True
以下示例对 Salt 主服务器管理的所有工作节点执行 ping 操作:
saltuser@salt-master:~$ sudo salt '*' test.ping router1: True router2: True
以下示例使用该 junos.cli
函数在运行 Junos OS 的指定设备上发出 show version
命令:
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show version' router1: ---------- message: Hostname: router1 Model: mx104 Junos: 18.4R1.8 JUNOS Base OS boot [18.4R1.8] JUNOS Base OS Software Suite [18.4R1.8] JUNOS Crypto Software Suite [18.4R1.8] JUNOS Packet Forwarding Engine Support (TRIO) [18.4R1.8] JUNOS Web Management [18.4R1.8] JUNOS Online Documentation [18.4R1.8] JUNOS SDN Software Suite [18.4R1.8] JUNOS Services Application Level Gateways [18.4R1.8] JUNOS Services COS [18.4R1.8] JUNOS Services Jflow Container package [18.4R1.8] JUNOS Services Stateful Firewall [18.4R1.8] JUNOS Services NAT [18.4R1.8] JUNOS Services RPM [18.4R1.8] JUNOS Services SOFTWIRE [18.4R1.8] JUNOS Services Captive Portal and Content Delivery Container package [18.4R1.8] JUNOS Macsec Software Suite [18.4R1.8] JUNOS Services Crypto [18.4R1.8] JUNOS Services IPSec [18.4R1.8] JUNOS DP Crypto Software Software Suite [18.4R1.8] JUNOS py-base-powerpc [18.4R1.8] JUNOS py-extensions-powerpc [18.4R1.8] JUNOS jsd [powerpc-18.4R1.8-jet-1] JUNOS Kernel Software Suite [18.4R1.8] JUNOS Routing Software Suite [18.4R1.8] out: True
如果遇到错误'junos' __virtual__ returned False: The junos or dependent module could not be loaded: junos-eznc or jxmlease or yamlordereddictloader or proxy could not be loaded
,Junos 代理工作节点服务器可能未安装 Junos PyEZ 或 或jxmlease
yamlordereddictloader
模块,或者 Junos 代理工作节点进程可能未运行或无法向设备进行身份验证。
(可选)配置 Junos 系统日志引擎
Junos 系统日志引擎(适用于 Salt)可用于对运行 Junos OS 的设备进行基于事件的状态管理。启用 Junos 系统日志引擎时,它会侦听系统日志事件,提取事件信息,将其转换为 Salt 格式,然后将其发布到 Salt 事件总线上。要启用 Junos 系统日志引擎,必须在 Salt 主服务器上配置 Junos 系统日志引擎,并且还必须将运行 Junos OS 的设备配置为将系统日志事件发送到 Salt 服务器上配置的端口。
Junos 系统日志引擎也可以在代理工作节点服务器上运行。
要在 Salt 主服务器上启用 Junos 系统日志引擎,请执行以下操作:
要将运行 Junos OS 的设备配置为将系统日志事件发送到运行 Junos 系统日志引擎的主机:
配置 Junos 系统日志引擎所在的服务器的主机名或 IP 地址,并配置其侦听的端口。
[edit] saltuser@router1# set system syslog host salt-master.example.com port 9999
配置要发送的事件类型。
要发送所有事件,请配置为
any any
指示所有设施和所有消息严重性级别。[edit] saltuser@router1# set system syslog host salt-master.example.com any any
要仅发送特定事件,请配置要捕获的事件的设施和消息严重性级别,例如:
[edit] saltuser@router1# set system syslog host salt-master.example.com kernel info saltuser@router1# set system syslog host salt-master.example.com security any
提交配置。
[edit] saltuser@router1# commit