Есть четыре вложенных списка. Для этого нужны 2 вложенных цикла, оба с подэлементами. Например, с включенной задачей из файла loop-item.yml
shell> cat loop-item.yml
- debug:
msg: "{{ outer_item.0.name }} {{ outer_item.1.name }} {{ item.0.name }} {{ item.1.name }}"
loop: "{{ outer_item.1.level1|default([])|subelements('level2') }}"
задача
- include_tasks: loop-item.yml
loop: "{{ directories|subelements('level0') }}"
loop_control:
loop_var: outer_item
дает декомпозицию вложенных списков
"msg": "DIR1 SUBDIR1 SUBDIR11 SUBDIR111"
"msg": "DIR1 SUBDIR1 SUBDIR11 SUBDIR112"
"msg": "DIR1 SUBDIR1 SUBDIR12 SUBDIR121"
"msg": "DIR1 SUBDIR1 SUBDIR12 SUBDIR122"
Q: "Может быть, структура неправильная? (json | список диктовок или другой?)"
A: Структура в порядке. Можно итерировать только списки. В любом случае любая другая структура должна быть преобразована в список.