首页 文章

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

提问于
浏览
0

我不确定我是否正确写这个,但我希望我能通过匹配谷物键然后按值(或子键:值)过滤来得到过滤的例子 . 我担心的是,未来某个时候可能会添加另一个谷物,并且filter_by会错误地拾取 . 以下示例......

谷物示例列表:

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

示例 Map 文件:

{% 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

    我在文档中完全错过了这个,直到我多次阅读它们为止...

    解决方案是添加颗粒值以进行过滤,如下所示:

    {% 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'
    )%}
    

相关问题