在盐状态之间传递变量

lev*_*lev 7 salt-stack

在Saltstack中,我有以下用例:

有一个状态redis.sls可以包含在其他州.redis.sls的结果应该以不同的方式配置,具体取决于包含redis.sls的状态.

例如:

redis.sls:
--------
{% if x==1 %}
   #do something
{% else %}
   #do something else
{% endif %}


state_a.sls
-----------
{% set x=1 %}
include:
  - redis

state_b.sls
-----------
{% set x=2 %}
include:
  - redis
Run Code Online (Sandbox Code Playgroud)

但*在*state_a*和*state_b*中无法识别x

我也尝试用这样的东西设置支柱值:

{{salt['pillar.set']('x', 1)}}
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.

还有其他想法吗?

小智 1

我想听听专家的说法,但我有类似的用例。我所做的是使用jinja 模板来扩展基本模板,然后我的子模板填充变量。

{% extends "base.template.sls" %}
{% block x %}1{% endblock %}
Run Code Online (Sandbox Code Playgroud)

唯一的问题可能是您现在必须分别调用 state_a 和 state_b,但如果您希望同时调用它们,则始终可以将它们放在逗号分隔的列表中。