如何通过 SaltStack 中的另一个 SLS 文件将参数传递给 SLS 文件?
How to pass parameters to an SLS file via another SLS file in SaltStack?
我在 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
应该进行回滚,但它做了同样的事情并再次失败,因为我没有更改 version
service-a
SLS 文件中的变量。我想通过 Orchestrator 文件更改 service-a
SLS 文件中的 version
变量。例如,当它转到 Plan B
时,它应该将 version
更改为 old
。
我知道的唯一方法是它可以由 Python 模块处理,但我想尽可能地通过 SLS 文件解决它。
在 orchestrator 文件中只需添加 pillar
参数:
Plan B:
salt.state:
- tgt: my-server
- sls: service-a
- pillar:
version: old
- onfail:
- Plan A
只有处于状态Plan B
,version
支柱的价值将是old
.
我在 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
应该进行回滚,但它做了同样的事情并再次失败,因为我没有更改 version
service-a
SLS 文件中的变量。我想通过 Orchestrator 文件更改 service-a
SLS 文件中的 version
变量。例如,当它转到 Plan B
时,它应该将 version
更改为 old
。
我知道的唯一方法是它可以由 Python 模块处理,但我想尽可能地通过 SLS 文件解决它。
在 orchestrator 文件中只需添加 pillar
参数:
Plan B:
salt.state:
- tgt: my-server
- sls: service-a
- pillar:
version: old
- onfail:
- Plan A
只有处于状态Plan B
,version
支柱的价值将是old
.