You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中遍历字典内的列表?

问题分析与解决方案

你的两个任务失败原因及修正方案如下:

任务1的问题

with_items的缩进错误,它属于任务级参数,必须和lineinfile、name同级,不能嵌套在lineinfile的参数列表里。缩进错误会导致Ansible无法识别循环规则,最终循环不生效。

任务2的问题

capabilities是列表类型,但你用了针对字典的lookup('dict', ...)来遍历。列表元素没有key属性,所以{{ item.key }}会触发未定义变量的错误。

正确的任务写法

推荐使用Ansible主流的loop语法(with_items是旧语法,功能一致但loop更直观),修正后即可正常遍历列表:

- name: Update /etc/security/capability.conf to add required hass capabilities
  lineinfile:
    dest: /etc/security/capability.conf
    line: "{{ item }}             {{ user_configs['hassuser'].name }}"
    owner: root
  loop: "{{ user_configs['hassuser'].capabilities }}"

如果坚持使用with_items,只需调整它的缩进位置:

- name: Update /etc/security/capability.conf to add required hass capabilities
  lineinfile:
    dest: /etc/security/capability.conf
    line: "{{ item }}             {{ user_configs['hassuser'].name }}"
    owner: root
  with_items: "{{ user_configs['hassuser']['capabilities'] }}"

调整后就能正确遍历capabilities列表,为每个权限条目在/etc/security/capability.conf中添加对应配置行。

内容的提问来源于stack exchange,提问作者Thibaut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:22:43