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 が呼び出されることはありません。なんで?

また、run コマンドにパラメータ 'reload' を指定するにはどうすればよいですか?

4

2 に答える 2

0

クラスター粒度によって返される値は文字列ではなくリストであるため、テストは true を返さないようです。たとえば、リストから文字列「passive」を検索するには、bar["baz"] == "foo" ではなく、構文 "foo" in bar["baz"] を使用します。

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

グレインがリストを返す場合、これでテンプレートが修正されます。

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

そして、それは true を返すはずです。

于 2014-06-18T20:29:07.457 に答える