saltstack - 用于在柱子内呈现变量的自定义模块

问题描述 投票:0回答:1

我正在编写一个自定义模块,该模块在支柱内执行以设置支柱变量

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-stack salt
1个回答
0
投票

salt
加载器不包含运行器,它包含执行模块。

要从支柱模板调用跑步者,请使用

saltutil.runner

value: {{ salt["saltutil.runner"]("myrunner.get_value", arg=["foo"]) | yaml_encode }}

还请注意,

/srv/salt
下的任何内容都将对所有小兵可用,即使它们没有专门作为模块加载。

如果你只使用 pillars 中的这个自定义函数,也许它应该是一个 custom pillar 代替。

© www.soinside.com 2019 - 2024. All rights reserved.