SaltStack – Salt 代理 Minions

SaltStack – Salt 代理 Minions


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

Salt 有一个单独的模块,即 salt proxy minion,它使用远程系统中运行的 REST 服务来控制远程系统。此 REST 服务是使用Representational State Transfer (REST)概念编写的基于 HTTP 的 Web 服务,它们既易于实现又易于使用。

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

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

工作示例

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

安装和配置 REST Web 服务

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

  • 使用 pip安装“瓶子”命令是一个Python的Web框架来开发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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁