我有这样的支柱数据集;
vlan_tag_id:
nginx: 1
apache: 2
mp: 3
redis: 4
在公式sls文件中我这样做;
{% set tag = pillar.get('vlan_tag_id', 'u') %}
现在我有一个变量tag
,它是一个字典{'apache': 2, 'nginx': 1, 'redis': 4, 'mp': 3}
在运行时,我传递一个支柱数据app
,其值为
1. apache
2. nginx
3. redis
4. mp
所以如果在运行时我通过了apache
,我希望得到一些能让我获得价值的2
我不能{{ salt['pillar.get']('vlan_tag_id:app', '')}}
,因为app本身就是一个变量。
我尝试过{{salt' pillar.get'}},但它会引发错误。
我该怎么做?
答案 0 :(得分:5)
由于tag
只是另一个字典,你也可以这样做:
{%- set tag = pillar.get('vlan_tag_id', 'u') %}
{%- set app = pillar.get('app') %}
{{ tag.get(app) }} # Note lack of quotes
如果要使用冒号语法,可以将app
的内容附加到密钥字符串:
{%- set app = pillar.get('app') %}
{{ salt['pillar.get']('vlan_tab_id:' + app) }}
我发现如果我将别名列为别名并将其分解一下则更容易理解:
{%- set pget = salt['pillar.get'] %}
{%- set app = pget('app') %}
{%- set tag = pget('vlan_tag_id') %}
{{ tag.get(app) }}