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

如何在Salt SLS中捕获执行模块返回结果并复用?

捕获SaltStack SLS中模块执行结果并复用

方法1:用set_fact存储临时结果(推荐)

这种方式可以将service.getsid的执行结果存储为minion的临时事实,避免重复执行模块,后续步骤直接引用即可:

{% set testVar = pillar['ServiceName'] %}

GetServiceId:
  module.run:
    - name: service.getsid
    - name: {{ testVar }}
  set_fact:
    - service_id: {{ salt['service.getsid'](name=testVar) }}
    - require:
      - module: GetServiceId

useServiceId:
  cmd.script:
    - source: test/path/test.ps1
    - args:
      - {{ salt['grains.get']('service_id') }}
    - require:
      - set_fact: GetServiceId

说明:

  • 先通过module.run执行service.getsid,再用set_fact把结果存入service_id临时grains
  • useServiceId通过require确保前置步骤执行完成,再用salt['grains.get']('service_id')取出结果作为脚本参数

方法2:直接在后续步骤调用模块(会重复执行)

如果模块执行无副作用,也可以直接在args中调用模块获取结果,但这种方式会让service.getsid执行两次(一次在GetServiceId,一次在参数渲染时):

{% set testVar = pillar['ServiceName'] %}

GetServiceId:
  module.run:
    - name: service.getsid
    - name: {{ testVar }}

useServiceId:
  cmd.script:
    - source: test/path/test.ps1
    - args:
      - {{ salt['service.getsid'](name=testVar) }}
    - require:
      - module: GetServiceId

如果不需要单独的GetServiceId步骤,也可以直接省略该步骤,直接在useServiceId中调用模块获取结果:

{% set testVar = pillar['ServiceName'] %}

useServiceId:
  cmd.script:
    - source: test/path/test.ps1
    - args:
      - {{ salt['service.getsid'](name=testVar) }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:01:20