2016-05-10 10 views
0

私のアプリケーションでは、ip、ma​​c addr、server nameなどと結びついているいくつかの設定値があり、私の柱と柱の正しい値に一致するモジュラ状態を思いついています。取得する。私はpillar.getでどのように穀粒値を使用するかに関する情報は見つけていません。SaltStack - pillar.getステートメントでどのように粒度を使用できますか?

柱例:私のテンプレートから

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

関連する問題