Deployment 如何通过SaltStack中的另一个SLS文件将参数传递给SLS文件?
我在SaltStack Orchestrator中有一个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
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
中,版本
支柱的值将为旧