自定义 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
其他都一样。
我正在使用 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
其他都一样。