Take a look at with_subelements in Ansible’s docs for loops.
- You need to create directories:
- Iterate though
objsand create files:
Here is an example:
---
- hosts: localhost
gather_facts: no
vars:
objs:
- { key1: value1, key2: [ value2, value3] }
- { key1: value4, key2: [ value5, value6] }
tasks:
- name: create directories
file: path="{{ item.key1 }}" state=directory
with_items:
objs
- name: create files
file: path="{{ item.0.key1 }}/{{ item.1 }}" state=touch
with_subelements:
- objs
- key2
An output is pretty self explanatory, the second loop iterates through the values the way you need it:
PLAY [localhost] **************************************************************
TASK: [create files] **********************************************************
changed: [localhost] => (item={'key2': ['value2', 'value3'], 'key1': 'value1'})
changed: [localhost] => (item={'key2': ['value5', 'value6'], 'key1': 'value4'})
TASK: [create files] **********************************************************
changed: [localhost] => (item=({'key1': 'value1'}, 'value2'))
changed: [localhost] => (item=({'key1': 'value1'}, 'value3'))
changed: [localhost] => (item=({'key1': 'value4'}, 'value5'))
changed: [localhost] => (item=({'key1': 'value4'}, 'value6'))
PLAY RECAP ********************************************************************
localhost : ok=2 changed=2 unreachable=0 failed=0