我正在尝试迭代 Ansible 中字典中的列表,但找到如何访问该列表。
我的变量如下所示:
user_configs:
hassuser:
name: hassuser
groups:
- hassuser
- dialout
uid: 8123
capabilities:
- cap_net_raw
- cap_net_admin
我的任务看起来是这样的:
- name: Update /etc/security/capability.conf to add required has capabilities
lineinfile:
dest: /etc/security/capability.conf
line: "{{ item }} {{ user_configs['hassuser'].name }}"
owner: root
with_items: "{{ user_configs['hassuser']['capabilities'] }}"
也尝试过这个,但它看起来不起作用:
- name: Update /etc/security/capability.conf to add required hass capabilities
lineinfile:
dest: /etc/security/capability.conf
line: "{{ item.key }} {{ user_configs['hassuser'].name }}"
owner: root
loop: "{{ lookup('dict', user_configs['hassuser'].capabilities) }}"
谢谢
在您的第一个示例中,
with_items
缩进错误(它是任务上的参数,而不是lineinfile
模块上的参数):在第二个示例中,您使用的
loop
是 ,通常应该使用它来替换,但是当您应该与上一个示例中with_items
相同地使用它时,您选择了更复杂的解决方案:with_items
请注意,您还可以像这样拼写最后一行: