1

我正在尝试在我的 init.sls 中使用自定义粒度,但 if 语句永远不会正确。这是我的自定义谷物在行动:

salt '*' grains.item cluster

proxy2.example.com:
  cluster:
      passive
proxy1.example.com:
  cluster:
      active

我的 init.sls 调用:

{% if grains['cluster'] == 'active' %}
  nginx.signal:
    module:
      - run
      - order: 15
{% endif %}

但是 nginx.signal 永远不会被调用。为什么?

另外,我如何将参数“重新加载”提供给运行命令?

4

2 回答 2

0

我相信您可以reload使用以下内容提供论点:

nginx.signal:
    module:
        - run
        - signal: reload
于 2013-09-03T07:31:54.487 回答
0

似乎测试没有返回 true,因为集群粒度返回的值是一个列表,而不是一个字符串。例如,要在列表中搜索字符串“passive”,请在 bar["baz"] 中使用语法 "foo",而不是 bar["baz"] == "foo"。

>>> grains = {}
>>> grains["cluster"] = ["passive"]
>>> grains["cluster"]
['passive']
>>> grains["cluster"] == "passive"
False
>>> "passive" in grains["cluster"]
True
>>>

如果你的grain返回一个列表,这应该修复你的模板:

{% if "active" in grains.get("cluster","") %}

它应该返回 true。

于 2014-06-18T20:29:07.457 回答