Ansible Jinja模板无法访问find注册变量报list object has no element
错误原因定位
你写Jinja循环时存在变量使用偏差:
- 执行
{% for user in user_list.files %}循环时,user本身就是user_list.files列表里存储的每个用户目录的字典对象,不是列表的索引值 - 你后续写的
user_list.files[user]['gr_name'],相当于把拿到的字典对象反过来当列表的取数下标,列表不支持这种非数字的索引操作,因此触发了AnsibleUndefinedVariable: list object has no element的报错
修正方案
直接用循环拿到的user变量取需要的字段即可,修正后的模板如下:
#Realtime scanning of downloads folder {% for user in user_list.files %} OnAccessIncludePath /home/{{ user.gr_name }}/Downloads {% endfor %} OnAccessIncludePath /media
补充:Jinja模板支持两种字典取值方式,
user.gr_name和user['gr_name']效果完全一致,前者写法更简洁。
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

