我想按服务器名称过滤我的数据。这是我的配置和地图文件。我尝试首先按柱子过滤(有效),然后按谷物过滤(无效)。怎样做双重过滤?目标是提取每个服务器的配置。
# defaults.yaml
Dev:
server1:
options:
- name: app1
run: true
server2:
options:
- name: app1
run: true
- name: app2
run: false
Prod:
server1:
options:
- name: app1
run: true
server2:
options:
- name: app1
run: false
- name: app2
run: true
{% import_yaml tpldir ~ '/defaults.yaml' as defs %}
{% set data = salt['pillar'].filter_by( defs,
pillar='env' ,
default=''
) %}
{% set location_data = salt['grains'].filter_by( data,
grains='hostname',
default=''
) %}
我的用例需要通过命令行支柱 -
env: dev
这些filter_bys都不应该工作。
是
salt["pillar.filter_by"]()
不是salt["pillar"].filter_by()
{% import_yaml tpldir ~ '/defaults.yaml' as defs %}
{% set data = salt['pillar.filter_by']( defs,
pillar='env' ,
default=''
) %}
{% set location_data = salt['grains.filter_by']( data,
grains='hostname',
default=''
) %}
供进一步参考。你可以添加类似的东西
{% do salt["log.debug"]("value of data is: " ~ data) %}
在渲染中获取调试登录。这可以帮助处理 retnetion if。