我正在编写一个自定义模块,该模块在支柱内执行以设置支柱变量
import json
def get_value(key: str) -> str:
return "foo"
我将文件保存在
/srv/salt/_modules/my_custom_module.py
我以这种方式在我的支柱上使用它:
value: {{ salt['my_custom_module'].get_value('foo') | yaml_encode }}
这很完美!但是我想避免这个模块在 minions 上同步,因为这是一个“salt-master”的唯一功能。 我试过用
配置主人runner_dirs:
- /srv/salt/runners
并将模块复制到该文件夹,因为运行器只是主端的模块,但是这不起作用,我有以下错误:
Jinja variable 'salt.utils.templates.AliasedLoader object' has no attribute 'my_custom_module'
salt
加载器不包含运行器,它包含执行模块。
saltutil.runner
。
value: {{ salt["saltutil.runner"]("myrunner.get_value", arg=["foo"]) | yaml_encode }}
还请注意,
/srv/salt
下的任何内容都将对所有小兵可用,即使它们没有专门作为模块加载。
如果你只使用 pillars 中的这个自定义函数,也许它应该是一个 custom pillar 代替。