SaltStack - 使用 MinionFS 作为文件服务器

MinionFS 是 Salt 为 minion 提供的一个特殊文件服务器,用于在它们之间交换文件。MinionFS 提供的文件是 minion 有意共享的文件。要共享文件,Minion 必须遵循以下步骤。

  • 源 minion 必须使用 cp.push 函数将文件推送到 salt master。

  • 一旦源 minion 推送了文件,任何其他使用 MinionFS 文件服务器的 minion 都可以访问已部署的文件。

启用推送

默认情况下,minion 将文件推送到 master 是禁用的。要接受来自 minions 的文件,master 需要在配置文件中具有"file_recv"选项,并且其值必须设置为 True。默认情况下,"file_recv"的值为 false

file_recv: True

启用该选项后,重新启动 master 服务。

推送文件

Minions 可以将文件推送到 master。它由 cp.push 函数执行。此 cp.push 函数提供了一种简单的机制,可使用 minion id 通过 minion 推送文件。

salt 'minion-id' cp.push /path/to/the/file

此处,minion-id 用于标识哪个 minion 正在推送文件。此命令会将文件存储在 master 的 cachedir 下名为 minions 的子目录中。通常,路径为 – /var/cache/salt/master/minions。

对于 minion、m1 和文件 – /var/log/mylog.txt,文件将存储在 – /var/cache/salt/master/minions/m1/var/log/mylog.txt。

启用 MinionFS

要启用 MinionFS,只需在文件服务器后端设置中添加 minion,如以下代码块所示。

fileserver_backend:
   - roots
   - minion

一旦启用 MinionFS,minion 推送的文件将作为 − 提供

salt://<minion-id>/path/to/pushed/file

对于 minion、m1 和推送的文件 – /var/log/mylog.txt,推送的文件将从 salt://m1/var/log/mylog.txt 提供。

可以使用以下配置将此 minionFS 安装在特殊目录中。它将 minionFS 文件与其他文件分开,并有助于组织 minion 文件。

minionfs_mountpoint: salt://minionfs

对于上述配置,该文件将在 minionfs 目录下可用,如下所示 - salt://minionfs/m1/var/log/mylog.txt

MinionFS 高级选项

MinionFS 还提供了一个选项,用于启用/禁用从某个 minion 推送的文件的可用性。选项包括 minionfs_whitelist(用于启用 minion)和 minionfs_blacklist(用于禁用 minion)。

minionfs_whitelist:
   - webserver
   - develop*
   - ‘mail\d+.mysite.com'

minionfs_blacklist:
   - testing

在上述配置中,除了 testing 之外的所有 minion 都允许使用 minionFS 共享文件。

  • Webserver1

  • id 与正则表达式 develop * 匹配的 Minion

  • id 与正则表达式 mail\d+.mysite.com 匹配的 Minion。

  • Testing

在下一章中,我们将学习如何将 Cron 与 Salt 结合使用。