自定义 Saltstack Python 模块功能可在 pillar sls 文件中访问

Custom Saltstack Python module function accesible in pillar sls file

我正在使用 Jinja 模板将一些数据加载到我的支柱文件 configuration.sls 中。在保存为支柱之前,我想对该部分数据(字典结构)进行一些额外的处理。在 Jinja 中编写附加处理有点复杂,所以我想在某些 Python 函数中进行此类附加处理,并能够像 salt 模块一样调用该函数。

我知道我可以在名为 example.py_modules 中定义我自己的模块,我可以在其中定义名为 get_processed_data(data) 的函数,并在状态文件中在 Jinja 中调用它,例如:

 {% set data_to_save = salt.example.get_processed_data(data) %}

但是我无法在支柱 configurations.sls 文件中做这样的事情。当我尝试时,pillar 呈现它不知道的错误 example。有什么方法可以做这样的事情吗?

我知道 ext_pillars,但据我所知,这些被用作 Python 中编写的 pillar 文件。我感兴趣的是能够创建简单的函数,可以在 pillar 文件中调用。而且我想它应该以某种方式可行,因为在 pillar 中可以调用 salt.file.find(),其中 file 也是一个模块(内置,但仍然)。

由于 pillar 是在 master 上渲染的,因此您需要确保模块已同步到 master。

当您使用 salt <minion> saltutil.sync_modules 同步时,您正在同步到 minion。同步到主使用 salt-run saltutil.sync_modules

https://docs.saltproject.io/en/latest/ref/runners/all/salt.runners.saltutil.html#salt.runners.saltutil.sync_modules

其他都一样。