2016-05-10 22 views
0

我的應用程序中有幾個配置值與ip,mac addr,服務器名稱等有關,我試圖想出一個模塊化狀態,它將匹配來自我的支柱和支柱的正確值。得到。我沒有找到關於如何在pillar.get中使用grain值的任何信息。SaltStack - 如何在pillar.get語句中使用grain值?

支柱例如:

account: 
    qa: 
    server1: 
     appUsername: 'user2' 
     appPassword: 'password2' 
    server2: 
     appUsername: 'user2' 
     appPassword: 'password2' 
    prod: 
    server3: 
     appUsername: 'user3' 
     appPassword: 'password3' 
    server4: 
     appUsername: 'user4' 
     appPassword: 'password4' 

線從我的模板:

keyUser={{ salt['pillar.get']('account:grains['env']:grains['id']:appUsername', 'default_user') }} 
keyPass={{ salt['pillar.get']('account:grains['env']:grains['id']:appPassword', 'default_pass') }} 

這完全是那麼自然,但無論我嘗試錯誤的,或將難逃實際晶粒查找並給我的默認值。我也無法在Google上找到任何內容。任何人都有解決方案?我應該動態地在柱子上設置appUsername和appPassword值嗎?我喜歡支柱上的佈局,因爲它是一個非常容易閱讀的查詢表,沒有大量的有條件的忍者。

回答

1

首先,您不能只將grains['env']嵌入到支柱查找字符串中 - 您需要連接。其次,你的Jinja任務看起來不對。試試這個:

{% set keyUser = pillar.get('account:'~grains['env']~':'~grains['id']~':appUsername', 'default_user') %} 

~是神社的concatenate operator

另外,salt['pillar.get']('blah')pillar.get('blah')相同。

但是!沒有實際的錯誤和/或完整的模板很難確定。

+0

謝謝,這解決了我的問題 - 我沒有正確逃離忍者 – user797963