【问题标题】:Salt with Jinja conditionJinja条件的盐
【发布时间】:2021-10-14 19:06:53
【问题描述】:

我正在尝试根据 IP 第一个数字执行盐状态。

{% if grains['fqdn_ip4'].startswith('10') %}
task
{% endif %}

我明白了:

failed: Jinja variable 'list object' has no attribute 'startswith'

我的语法似乎不错,如果我用 id 替换谷物项 fqdn_ip4,它可以工作:

{% if grains['id'].startswith('10') %}
task
{% endif %}

格式似乎不同:

salt-call grains.get id

返回

local:
admin.local

salt-call grains.get fqdn_ip4

返回

local:
- 10.25.64.33

所以我在 fqdn_ip4 值前面有一个“-”。

提前致谢,

B.

【问题讨论】:

    标签: jinja2 salt-stack salt


    【解决方案1】:

    根据错误和grains.get 输出,我们可以看到fqdn_ip4 颗粒是一个列表/数组。在具有超过 1 个 IP 地址的机器上,此颗粒将包含多个元素。

    例子:

    minion:
      - 127.0.0.1
      - 1.2.3.4
      - 5.6.7.8
    

    所以如果你想用列表的first元素匹配条件,你必须使用grains['fqdn_ip4'][0]。如下:

    {% if grains['fqdn_ip4'][0].startswith('10') %}
    show-ip:
      module.run:
        - name: test.echo
        - text: grains['fqdn_ip4'][0]
    {% endif %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多