You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SaltStack Pillar自定义模块仅在Master端运行?

解决Pillar中调用Master专属Runner模块的问题

问题原因

你把模块移到Runner目录后,依然用Minion模块的调用方式(salt['my_custom_module'])行不通——因为Pillar模板里的salt对象默认对应Minion执行模块的命名空间,而Runner模块属于Master端专属组件,需要通过特定方式调用。

正确步骤

  1. 配置Runner目录并放置模块

    • 确保Master配置文件中runner_dirs指向正确路径(默认是/srv/salt/_runners,也可自定义):
      runner_dirs:
        - /srv/salt/_runners
      
    • 将自定义模块放到该目录,路径为/srv/salt/_runners/my_custom_module.py,代码无需修改:
      import json
      
      def get_value(key: str) -> str:
          return "foo"
      
  2. 同步Runner模块
    在Master上执行命令,让Salt加载新的Runner模块:

    salt-run saltutil.sync_runners
    
  3. 修改Pillar中的调用方式
    不再直接通过salt对象访问Runner模块,而是用salt.runner函数调用:

    value: {{ salt.runner('my_custom_module.get_value', key='foo') | yaml_encode }}
    

这样就能在Pillar中调用仅运行在Master端的自定义模块,且不会同步到Minion。

内容的提问来源于stack exchange,提问作者jmhostalet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:59:58