with_subelements
требуется список хэшей (т.е. словарей) и ключ для поиска в каждом элементе этого списка, но список хэшей, возвращаемый lookup('dict', user)
, будет возвращать что-то вроде:
[
{
"key": "comment",
"value": "comment user1"
},
{
"key": "shell",
"value": "/bin/bash"
},
{
"key": "name",
"value": "user1"
}
...
]
И with_subelements
попытается найти ключ groups
в каждом из словарей в этом списке, что не получается.
with_subelements:
- "{{ lookup('dict', user) }}" # Wrong: items in this list of dict does not have 'groups' keys
- groups # OK: this a field name to lookup
В включенной create_simple.yml
переменная user
будет словарь, такой как:
name: 'user1'
simple: False
groups:
- gname: 'secondary'
gid: 30000
...
Если вы хотите перечислить groups
каждый раз, когда create_simple.yml
включен, вы можете сделать в create_simple.yml
:
- name: 'test'
debug:
msg: '{{ resultat.gname }}'
with_items: "{{ user.groups }}"
loop_control:
loop_var: resultat
Или даже проще, если вам нужна только одна задача в create_simple.yml
, вы можете напрямую использовать with_subelements
вместо include_tasks
в create.yml
:
# this will lookup field 'groups' in each element of the 'userslist' variable
- name: 'Create'
debug:
msg: "Group for user {{ resultat.0.name }}: {{ resultat.1.gname }}"
with_subelements:
- "{{ userslist }}"
- groups
loop_control:
loop_var: resultat