盐:在SLS中使用定制谷物

时间:2013-09-02 22:07:06

标签: nginx module salt-stack

我正在尝试在init.sls中使用自定义粒度,但if-Statements永远不会成立。这是我的自定义谷物:

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。为什么呢?

另外,如何向运行命令提供参数'reload'?

2 个答案:

答案 0 :(得分:0)

我相信您可以使用以下内容提供reload参数:

nginx.signal:
    module:
        - run
        - signal: reload

答案 1 :(得分:0)

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

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

如果你的谷物正在返回一个列表,这应该修复你的模板:

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

它应该返回true。

相关问题