如何将盐执行模块与非 python 依赖项同步

How to sync a salt execution module with non-python dependencies

我目前正在将一个 perl / bash 工具转换成一个 salt 模块,我想知道我应该如何将这个模块的非 python 部分同步到我的 minions。

我想运行 salt agent-less,理想情况下,一旦通过 salt-ssh 调用,依赖项将与模块本身自动同步。

但似乎只有 python 个脚本同步。有什么好的干净的解决方案吗?

在模块执行期间从 salt 文件服务器复制必要的文件对我来说似乎有点不对..

仅支持 python 个扩展,因此最好的做法是执行以下操作:

1) 通过 file.managed / file.recurse 状态部署非 Python 组件。

2) 确保您的自定义执行模块有一个 __virtual__() 函数来检查是否存在非 Python 依赖项,如果不存在则返回 False。这将防止模块被加载和使用,除非 deps 存在。

3) 使用 saltutil.sync_modules 同步您的自定义模块。此函数还将重新调用加载程序以更新 minion 上的可用执行模块,因此如果您已经同步了自定义模块并稍后部署了非 Python 依赖项,saltutil.sync_modules 将重新-加载自定义模块,如果您的 __virtual__() 函数返回 True 或所需的模块名称,您的执行模块就可以使用了。