Jinja 条件下的盐
Salt with Jinja condition
我正在尝试根据 IP 第一个数字执行加盐状态。
{% if grains['fqdn_ip4'].startswith('10') %}
task
{% endif %}
我得到:
failed: Jinja variable 'list object' has no attribute 'startswith'
我的语法似乎不错,如果我用 id 替换 grain 项 fqdn_ip4,就可以了:
{% if grains['id'].startswith('10') %}
task
{% endif %}
虽然格式似乎有所不同:
salt-call grains.get id
returns
local:
admin.local
和
salt-call grains.get fqdn_ip4
returns
local:
- 10.25.64.33
所以我在 fqdn_ip4 值前面有一个“-”。
提前致谢,
B.
根据错误和 grains.get
输出,我们可以看到 fqdn_ip4
颗粒是 list/array。在具有 1 个以上 IP 地址的机器上,此粒度将包含多个元素。
示例:
minion:
- 127.0.0.1
- 1.2.3.4
- 5.6.7.8
所以如果你想用列表的第一个元素匹配条件,你必须使用grains['fqdn_ip4'][0]
。如下所示:
{% if grains['fqdn_ip4'][0].startswith('10') %}
show-ip:
module.run:
- name: test.echo
- text: grains['fqdn_ip4'][0]
{% endif %}
我正在尝试根据 IP 第一个数字执行加盐状态。
{% if grains['fqdn_ip4'].startswith('10') %}
task
{% endif %}
我得到:
failed: Jinja variable 'list object' has no attribute 'startswith'
我的语法似乎不错,如果我用 id 替换 grain 项 fqdn_ip4,就可以了:
{% if grains['id'].startswith('10') %}
task
{% endif %}
虽然格式似乎有所不同:
salt-call grains.get id
returns
local:
admin.local
和
salt-call grains.get fqdn_ip4
returns
local:
- 10.25.64.33
所以我在 fqdn_ip4 值前面有一个“-”。
提前致谢,
B.
根据错误和 grains.get
输出,我们可以看到 fqdn_ip4
颗粒是 list/array。在具有 1 个以上 IP 地址的机器上,此粒度将包含多个元素。
示例:
minion:
- 127.0.0.1
- 1.2.3.4
- 5.6.7.8
所以如果你想用列表的第一个元素匹配条件,你必须使用grains['fqdn_ip4'][0]
。如下所示:
{% if grains['fqdn_ip4'][0].startswith('10') %}
show-ip:
module.run:
- name: test.echo
- text: grains['fqdn_ip4'][0]
{% endif %}