2014-02-08 109 views
1

我試圖寫一個狀態文件匹配一個支柱值,但我不知道如何(或者如果可能的話)匹配支柱屬性的值在字典中。該salt.module.match API文檔不深究,任何的細節,並沒有明顯的方法是卓有成效的:如何匹配字典中支柱屬性的值?

[email protected]:~ # salt clowder saltutil.refresh_pillar 
clowder: 
    None 
[email protected]:~ # salt clowder pillar.item wsgi_still 
clowder: 
    ---------- 
    wsgi_still: 
     ---------- 
     foo: 
      bar 
     nginx_default: 
      ---------- 
      directives: 
       - return 444 
[email protected]:~ # salt clowder match.pillar 'wsgi_still["foo"]:bar' 
clowder: 
    False 
[email protected]:~ # salt clowder match.pillar "wsgi_still['foo']:bar" 
clowder: 
    False 
[email protected]:~ # salt clowder match.pillar "wsgi_still.foo:bar" 
clowder: 
    False 

我嘗試調試情況得到儘可能在match.py​​堅持一個pdb_trace()和運行鹽-minion在前臺,但這完全沒用,導致通信錯誤而不是調試shell,大概是由於Salt與ØMQ的奇怪交互。 :)

爲了澄清,我們的目標將是有這樣的事情的工作在我/srv/salt/top.sls文件:

base: 
    'wsgi_still["foo"]:bar': 
    - match: pillar 
    - wsgi_distiller 

我已經證實,salt clowder match.pillar "foo:bar"作品我的設置(返回True),當foo: bar這個走狗的支柱。

而且,我相信這是從不同的角度對同一個問題:

[email protected]:~ # salt -I "foo:bar" test.ping 
clowder: 
    True 
[email protected]:~ # salt -I "wsgi_still['foo']:bar" test.ping 

我只是包括它,因爲「使用-I」標誌是到目前爲止,我收到的唯一建議。 :)在支柱數據

回答

2

嵌套類型的字典通過以下方式進行訪問:

salt -I "wsgi_still:foo:bar" test.ping 

這同樣適用於在topfile匹配:

base: 
    'wsgi_still:foo:bar': 
    - match: pillar 
    - wsgi_distiller 
+0

優秀。謝謝。這只是分隔符。我從來沒有想到這一點。 – Hipikat