SaltStack - grains.filter_by,指定粒度键并按子键过滤
SaltStack - grains.filter_by, specify grain key and filter by sub key
我不确定我的措辞是否正确,但我希望我能得到一个通过匹配粒度键然后按值(或子 key:values)进行过滤的示例。我担心的是,将来某个时候可能会添加另一种谷物,并被 filter_by 错误地拾取。下面的示例...
grains 示例列表:
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 获取什么?我知道这不是最好的例子,但是当代码审查我写的一些状态时出现了这个问题,关于我们如何定位 grain 键我没有一个好的答案。在这种情况下,我想以粒度 'role' 为目标并过滤该粒度中的值。我该怎么做?
我在文档中完全错过了这一点,直到我多次阅读它们...
解决方案是像这样添加 grain 值进行过滤:
{% 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'
)%}
我不确定我的措辞是否正确,但我希望我能得到一个通过匹配粒度键然后按值(或子 key:values)进行过滤的示例。我担心的是,将来某个时候可能会添加另一种谷物,并被 filter_by 错误地拾取。下面的示例...
grains 示例列表:
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 获取什么?我知道这不是最好的例子,但是当代码审查我写的一些状态时出现了这个问题,关于我们如何定位 grain 键我没有一个好的答案。在这种情况下,我想以粒度 'role' 为目标并过滤该粒度中的值。我该怎么做?
我在文档中完全错过了这一点,直到我多次阅读它们...
解决方案是像这样添加 grain 值进行过滤:
{% 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'
)%}