Deployment 如何通过SaltStack中的另一个SLS文件将参数传递给SLS文件?

Deployment 如何通过SaltStack中的另一个SLS文件将参数传递给SLS文件?,deployment,salt-stack,Deployment,Salt Stack,我在SaltStack Orchestrator中有一个SLS文件,其中包含以下内容: Plan A: salt.state: - tgt: my-server - sls: service-a Plan B: salt.state: - tgt: my-server - sls: service-a - onfail: - Plan A {% set image = pillar["image"] | defa

我在SaltStack Orchestrator中有一个SLS文件,其中包含以下内容:

Plan A:
  salt.state:
    - tgt: my-server
    - sls: service-a

Plan B:
  salt.state:
    - tgt: my-server
    - sls: service-a
    - onfail:
      - Plan A
{% set image = pillar["image"] | default("service-api") %}
{% set version = pillar["version"] %}

Deploy A:
  cmd.run:
    - name: docker-compose -f {{version}}/docker-compose.yml up
    ..... (+ many lines of other commands and codes)
service-a
SLS文件中,我有如下内容:

Plan A:
  salt.state:
    - tgt: my-server
    - sls: service-a

Plan B:
  salt.state:
    - tgt: my-server
    - sls: service-a
    - onfail:
      - Plan A
{% set image = pillar["image"] | default("service-api") %}
{% set version = pillar["version"] %}

Deploy A:
  cmd.run:
    - name: docker-compose -f {{version}}/docker-compose.yml up
    ..... (+ many lines of other commands and codes)
现在,问题是,当
计划A
失败时,那么
计划B
应该执行回滚,但它执行相同的操作,并且再次失败,因为我没有更改
服务-A
SLS文件中的
版本
变量。我想通过Orchestrator文件更改
service-a
SLS文件中的
version
变量。例如,当它转到
计划B
时,它应该将
版本
更改为
旧版本

我知道的唯一方法是它可以由Python模块处理,但我希望尽可能通过SLS文件来处理。

在orchestrator文件中,只需添加
支柱
参数:

Plan B:
  salt.state:
    - tgt: my-server
    - sls: service-a
    - pillar:
        version: old
    - onfail:
      - Plan A
在状态
计划B
中,
版本
支柱的值将为