Во-первых, перед тем, как дать вам возможность писать циклы в Ansible, небольшой совет. НЕ ЗАПИСЫВАЙТЕ ПРОГРАММЫ В ANSIBLE. Каждый раз, когда вы пытаетесь использовать l oop с большим списком задач, вы вносите более тонкую сложность в свои playbooks, что заставит вас страдать позже.
Большинство задач, которые вы хотите выполнять со списками, можно выполнить как серия операций над списком. Например, если у вас есть foo: [1,2,3,4]
, и вы хотите создать каталоги с этими именами и отправить эти имена на удаленный сервер, лучше написать так:
- name: Creating dirs
file:
state: directory
name: '{{ item }}'
loop: '{{ foo }}'
when: item != 3
- name: Sending to remote
uri:
url: 'http://example.com/{{ item }}'
loop: '{{ foo }}'
when: item != 3
Этот код можно поддерживать, и он относительно прост. отлаживать. Итак, вот что вы хотите сделать, включает:
tasklist.yaml:
- file:
state: directory
name: '{{ item }}'
- uri:
url: 'http://example.com/{{ item }}'
внешний список задач:
- include_tasks: tasklist.yaml
loop: '{{ foo }}'
when: item != 3
когда оценивается на каждом run, но вам нужно поместить туда какой-то неинвариант, например, item
(переменная magi c для l oop для создания).