Это действительно плохой пример того, как работает поиск subelements
. (И имеет старый, неподдерживаемый, синтаксис).
Посмотрите на это:
---
- hosts: localhost
gather_facts: no
vars:
families:
- surname: Smith
children:
- name: Mike
age: 4
- name: Kate
age: 7
- surname: Sanders
children:
- name: Pete
age: 12
- name: Sara
age: 17
tasks:
- name: List children
debug:
msg: "Family={{ item.0.surname }} Child={{ item.1.name }} Age={{ item.1.age }}"
with_subelements:
- "{{ families }}"
- children
Задача Список детей похожа на вложенный цикл поверх families
(внешний цикл) и над children
подэлементом в каждом семействе (внутренний цикл). Поэтому вы должны предоставить список dicts в качестве первого аргумента для subelements
и имени подэлемента, который вы хотите итерировать внутри каждого внешнего элемента.
Таким образом item.0
(семья в моем примере) является внешним элементом и item.1
(дочерний элемент в моем примере) является внутренним элементом.
В примере Ansible docs subelements
используется для циклического перемещения по пользователям (внешний) и добавления нескольких открытых ключей (внутренних).