SaltStack - grains.filter_by,指定grain键并按子键过滤

时间:2016-04-19 21:21:24

标签: salt-stack

我不确定我是否正确写了这个,但我希望我能通过匹配谷物键然后按值(或子键:值)过滤来获得过滤的示例。我担心的是,未来某个时候可能会添加另一个谷物,并且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'
)%}

在这个例子中,想象次要是未来添加的额外谷物。添加此二级谷物后,mapfile会为Host2选择什么?我知道这不是最好的例子,但是当代码审查我写的一些状态时,这就出现了,而且我对如何定位谷物键没有很好的答案。在这种情况下,我想要定位谷物角色'并过滤该谷物中的值。我该怎么做?

1 个答案:

答案 0 :(得分: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'
)%}