柱の値に一致する状態ファイルを作成しようとしていますが、辞書の柱の属性の値に一致する方法 (または可能かどうか) がわかりません。salt.module.match API docs はそれについて詳しく説明しておらず、明白なアプローチはどれも実りがありません:
root@ms-tapir:~ # salt clowder saltutil.refresh_pillar
clowder:
None
root@ms-tapir:~ # salt clowder pillar.item wsgi_still
clowder:
----------
wsgi_still:
----------
foo:
bar
nginx_default:
----------
directives:
- return 444
root@ms-tapir:~ # salt clowder match.pillar 'wsgi_still["foo"]:bar'
clowder:
False
root@ms-tapir:~ # salt clowder match.pillar "wsgi_still['foo']:bar"
clowder:
False
root@ms-tapir:~ # salt clowder match.pillar "wsgi_still.foo:bar"
clowder:
False
状況をデバッグする私の試みは、match.py に a を貼り付けてpdb_trace()
、フォアグラウンドで salt-minion を実行するところまで行きましたが、それはまったく役に立たず、おそらく、Salt と ØMQ との奇妙な相互作用が原因で、デバッグ シェルの代わりに通信エラーが発生しました。:)
/srv/salt/top.sls
明確にするために、目標は私のファイルに次のようなものを入れることです:
base:
'wsgi_still["foo"]:bar':
- match: pillar
- wsgi_distiller
このミニオンの柱にいるとき、私のセットアップで動作することを確認しsalt clowder match.pillar "foo:bar"
ました(リターンTrue
) 。foo: bar
また、これは別の角度から見た同じ問題だと思います。
root@ms-tapir:~ # salt -I "foo:bar" test.ping
clowder:
True
root@ms-tapir:~ # salt -I "wsgi_still['foo']:bar" test.ping
これまでに受け取った唯一の提案は「-I」フラグを使用するためです。:)