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

如何通过SaltStack编排器SLS文件向其他SLS文件传递参数?

在SaltStack编排器中通过SLS文件动态修改回滚时的version变量

我来帮你搞定这个问题!其实不用Python模块也能解决,SaltStack的编排器本身就支持在调用state的时候传递临时pillar数据,正好能用来覆盖回滚时的version变量。

核心思路

在Plan B的salt.state调用里,通过pillar参数给目标minion(my-server)传递一个临时的旧版本号,这样service-a SLS里的version变量就会使用这个回滚版本,而不是和Plan A相同的版本。

修改后的编排器SLS文件

Plan A:
  salt.state:
    - tgt: my-server
    - sls: service-a
    # 可选:如果需要明确指定Plan A的版本,也可以在这里传递pillar
    # - pillar:
    #     version: "v1.0.0"

Plan B:
  salt.state:
    - tgt: my-server
    - sls: service-a
    - onfail:
      - Plan A
    # 重点:传递临时pillar,指定回滚用的旧版本
    - pillar:
        version: "v0.9.0"  # 替换成你的实际旧版本号

关键说明

  1. 临时pillar的优先级:通过salt.state传递的pillar参数是临时注入到minion的,优先级高于minion本地配置的pillar值,所以service-a SLS里的{% set version = pillar["version"] %}会优先读取这个临时值。
  2. 回滚逻辑生效:当Plan A执行失败触发Plan B时,service-a会使用你指定的旧版本执行docker-compose up,从而完成回滚操作。
  3. 可选优化:如果想让Plan A的版本也可控,同样可以给Plan A加上pillar参数,这样整个部署-回滚流程的版本都能在编排器里统一管理。

额外注意

确保你的旧版本对应的docker-compose.yml文件存在于my-server的v0.9.0/目录下,否则回滚还是会失败哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:27:49