【问题标题】:how to access pillar data with variables?如何使用变量访问支柱数据?
【发布时间】:2016-10-13 20:36:50
【问题描述】:

我有一个这样的支柱数据集;

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', '')}},因为应用程序本身就是一个变量。

我尝试做 {{ salt'pillar.get'}},但它会抛出错误。

我该怎么做?

【问题讨论】:

    标签: jinja2 salt-stack


    【解决方案1】:

    由于tag 只是另一本字典,您也可以使用它:

    {%- set tag = pillar.get('vlan_tag_id', 'u') %}
    {%- set app = pillar.get('app') %}
    {{ tag.get(app) }} # Note lack of quotes
    

    如果要使用冒号语法,可以将app的内容追加到key字符串中:

    {%- set app = pillar.get('app') %}
    {{ salt['pillar.get']('vlan_tab_id:' + app) }}
    

    我发现如果我给pillar.get取别名并稍微分解一下,会更容易理解:

    {%- set pget = salt['pillar.get'] %}
    {%- set app = pget('app')         %}
    {%- set tag = pget('vlan_tag_id') %}
    {{ tag.get(app) }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2020-05-12
      • 2018-04-27
      • 2023-01-26
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多