如何使用 Salt Jinja2 模板递归过滤配置数据

问题描述 投票:0回答:1

我想按服务器名称过滤我的数据。这是我的配置和地图文件。我尝试首先按柱子过滤(有效),然后按谷物过滤(无效)。怎样做双重过滤?目标是提取每个服务器的配置。

# 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

jinja2 salt-stack
1个回答
0
投票

这些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。

© www.soinside.com 2019 - 2024. All rights reserved.