Как обрабатывать цикл в цикле

Подскажите пожалуйста. Имеем список переменных в плейбуке:

var:
  SERVICE:
     service1:
       - 1.txt
       - 2.txt
       - 3.txt
     service2:
       - 4.txt
       - 5.txt
       - 6.txt
       - 7.txt
     service3:
       - 8.txt
       - 9.txt
       - 10.txt

Необходимо в зависимости от того, с какими списками файлов мы хотим работать, итерировать каждый элемент списка. На вход плейбуку через extra-vars передаём список желаемых сервисов:

-e '{"service_name":["service1","service3"]}'

Есть дебаг таска:

- debug:
    var: "{{ item }}"
  loop: "{{ service_name | map('extract', SERVICE) | list }}"

Получаем следующий вывод:

ok: [localhost] => (item=['1.txt', '2.txt', '3.txt']) => {
    "<class 'list'>": "VARIABLE IS NOT DEFINED!",
    "ansible_loop_var": "item",
    "item": [
        "1.txt",
        "2.txt",
        "3.txt"
    ]
}
ok: [localhost] => (item=['8.txt', '9.txt', '10.txt']) => {
    "<class 'list'>": "VARIABLE IS NOT DEFINED!",
    "ansible_loop_var": "item",
    "item": [
        "8.txt",
        "9.txt",
        "10.txt"
    ]
}

В item содержится то, что необходимо, но итерируется список который мы передаем на вход а не объекты в нем.

Мне нужно, чтобы вывод был примерно такой, т.е. для каждого item из списка сервисов {{ service_name }} перебирался каждый item из списка переменных:

ok: [localhost] => (item=1.txt) => {
    "1.txt": "VARIABLE IS NOT DEFINED!",
    "ansible_loop_var": "item",
    "item": "1.txt"
}
ok: [localhost] => (item=2.txt) => {
    "2.txt": "VARIABLE IS NOT DEFINED!",
    "ansible_loop_var": "item",
    "item": "2.txt"
}
ok: [localhost] => (item=3.txt) => {
    "3.txt": "VARIABLE IS NOT DEFINED!",
    "ansible_loop_var": "item",
    "item": "3.txt"
}

Если делать так:

- debug:
    var: "{{ item }}"
  loop: "{{ service_name }}"

И передавать: -e '{"service_name":["service1","service3"]}'

то возникает ошибка:

fatal: [localhost]: FAILED! => {"msg": "'dict object' has no attribute 'service_name'"}

не воспринимает как переменную.


Ответы (0 шт):