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

3

我在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

service-a的SLS文件中,我有以下内容:

{% 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)

现在的问题是,当Plan A失败时,应该执行回滚操作Plan B,但实际上还是执行相同的操作,因为我没有在service-a SLS文件中更改version变量。 我想通过编排文件 Orchestrator 来更改 service-a SLS 文件中的 version 变量。例如,在进入 Plan B 时,将其更改为 old 。

我知道它可以通过Python模块来处理,但尽可能想通过SLS文件解决它。

1个回答

3
在编排文件中添加pillar参数即可:
Plan B:
  salt.state:
    - tgt: my-server
    - sls: service-a
    - pillar:
        version: old
    - onfail:
      - Plan A

只有在状态为"Plan B"时,version pillar的值才会是old

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接