我试图根据IP第一个数字执行一个salt状态。
{% 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.
发布于 2021-08-11 10:56:05
根据错误和grains.get输出,我们可以看到fqdn_ip4粒度是一个列表/数组。在有超过一个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 %}https://stackoverflow.com/questions/68740001
复制相似问题