SaltStack - Salt 代理 Minion


有很多设备,如路由器、网络设备等,具有定制操作系统、有限的内存和高安全性考虑。在这些设备中,我们无法安装标准salt-minion,因此无法管理这些系统。然而,Salt 提供了一种创新技术来克服这一限制。

Salt有一个单独的模块,salt proxy minion,它使用远程系统中运行的REST服务来控制远程系统。此 REST 服务是使用表述性状态传输 (REST)概念编写的基于 HTTP 的 Web 服务,并且它们既易于实现又易于使用。

每个设备都会有自己的SDK和开发环境来编写复杂的应用程序。Salt 期望根据 Salt 接口规范在设备中开发 REST 服务。Salt还提供了一个Python模块来编写REST Web服务。如果设备支持Python,那么开发REST Web服务就会很容易。

在远程系统中开发并部署 REST Web 服务后,可以将 Salt 配置为使用 REST Web 服务而不是 salt minion 来控制远程设备。

工作示例

让我们使用实时工作环境来学习salt proxy minion的概念。对于现场环境,我们为master和代理minion选择了Linux系统。我们将使用 REST Web 服务而不是 salt-minion 来控制系统。

安装和配置 REST Web 服务

Salt 提供了 REST Web 服务实现的示例,在其 contrib 模块中名为 proxyminion_rest_example。让我们安装示例 Web 服务。

  • 使用 pip安装“bottle” 。Bottle命令是一个用于开发 Web 应用程序Python Web 框架。

pip install bottle = 0.12.8
  • 从 github下载saltstack/salt-contrib项目。否则,请使用以下命令克隆项目。

git clone https://github.com/saltstack/salt-contrib
  • 打开终端并转到salt-contrib目录。

  • 这个 salt-contrib 目录将有一个文件夹proxyminion_rest_example。此文件夹包含 REST Web 服务的示例实现。转到 proxyminion_rest_example 文件夹。

  • 运行以下命令启动 REST Web 服务。

python rest.py --address <your ip address> --port 8000
  • 打开浏览器并加载 http://<您的 IP 地址>:8000。这将显示包含服务和包的默认页面,如下面的屏幕截图所示。

REST 网络服务

现在,我们已经配置了 REST Web 服务,它将检查如何配置 salt 代理来查询 REST Web 服务并控制系统。

配置盐代理

要配置 Salt-Proxy,我们必须遵循以下步骤。

  • 我们必须为盐代理指定主节点。编辑代理配置文件位置(位于 /etc/salt/proxy 中),然后输入以下代码。

master: <your ip address>
  • 在/srv/pillar/top.sls中修改/创建基础支柱文件,如以下代码块所示。

base:
  'p8000':
      - p8000
  • /srv/pillar中添加一个新的pillar 文件p8000.sls ,如下面的代码块所示。

proxy:
   proxytype: rest_sample
   url: http://<your ip address>:8000
  • 使用以下命令在调试模式下启动 salt-proxy。

salt-proxy --proxyid = p8000 -l debug
  • 与 salt-minion 类似,接受salt-proxy 键,如下所示。

salt-key -y -a p8000

The following keys are going to be accepted:
Unaccepted Keys:
p8000
Key for minion p8000 accepted.

运行盐

现在,运行salt命令并调用ping.test函数,如下所示。

salt p8000 test.ping

我们可以使用salt来运行 REST Web 服务支持的任何功能,这与salt-minion类似。

例如,可以使用以下命令获取颗粒信息。

salt p8000 grains.items