我不确定我是否正确写了这个,但我希望我能通过匹配谷物键然后按值(或子键:值)过滤来获得过滤的示例。我担心的是,未来某个时候可能会添加另一个谷物,并且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选择什么?我知道这不是最好的例子,但是当代码审查我写的一些状态时,这就出现了,而且我对如何定位谷物键没有很好的答案。在这种情况下,我想要定位谷物角色'并过滤该谷物中的值。我该怎么做?
答案 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'
)%}