2016-04-19 6 views
0

これを正しく言いたいのかどうか分かりませんが、穀粒のキーでマッチングしてフィルタリングする例が得られることを期待していました。値(またはサブキー:値)。私の懸案事項は、将来別の穀物が追加され、誤ってfilter_byによって取り上げられる可能性があるということです。以下の実施例...穀物のSaltStack - grains.filter_by、穀物キーを指定し、サブキーでフィルターをかける

例リスト:

Host1 
    role: 
     webserver 
    secondary: 
     none 
Host2 
    role: 
     appserver1 
    secondary: 
     appserver2 
Host3 
    role: 
     appserver1 
     appserver2 
    secondary: 
     none 

例マップファイル:

{% set java = salt['grains.filter_by']({ 
    'default': { 
     'target': '/some/default/file/path', 
    }, 
    'appserver1': { 
     'target': '/app/server1/path', 
    }, 
    'appserver2': { 
     'target': '/app/server2/path', 
    }, 
}, 
default='default' 
)%} 

この例では、二次的には将来の時点で添加した追加の穀物だったと想像します。このセカンダリグレインが追加された後、マップファイルはHost2でどのように選択されますか?私はこれが最良の例ではないことを知っていますが、これはコードが私が書いたいくつかの州をレビューするときに出てきました。私は穀物キーをどのようにターゲットできるかについて良い答えを得ていませんでした。この場合、私は穀粒の役割をターゲットにし、その穀粒の中の値にフィルターをかけたいと思うでしょう。どうすればいい?私は複数回それを読むまで、私は完全にドキュメントでこれを逃した

答えて

0

...

ソリューションはそうのようにフィルタリングするために穀物値を追加することです:

{% set java = salt['grains.filter_by']({ 
    'default': { 
     'target': '/some/default/file/path', 
    }, 
    'appserver1': { 
     'target': '/app/server1/path', 
    }, 
    'appserver2': { 
     'target': '/app/server2/path', 
    }, 
}, 
grain='role', 
default='default' 
)%} 
関連する問題