Ответ 1
Теперь поддерживается Ansible 2.3.0:
- name: myrole
with_items:
- "aone"
- "atwo"
include_role:
name: myrole
vars:
thing: "{{ item }}"
Можно ли вызвать роль несколько раз в цикле следующим образом:
vars:
my_array:
- foo
- bar
- baz
roles:
- role: foobar
with_items: my_array
Как мы можем это сделать?
Теперь поддерживается Ansible 2.3.0:
- name: myrole
with_items:
- "aone"
- "atwo"
include_role:
name: myrole
vars:
thing: "{{ item }}"
Там нет способа перебрать роль в настоящее время, но, как упоминалось в этом обсуждении в группе Google, вы можете передать список или указать роль и затем проведите через это внутри.
Итак, вы могли бы сделать что-то вроде:
# loop_role/tasks/main.yml
- name: debug item
debug: var="{{ item }}"
with_items: my_array
И затем используйте его следующим образом:
- hosts: all
vars:
my_array:
- foo
- bar
- baz
roles:
- { role: loop_role, my_array: "{{ my_array }}" }
Модуль include_role
описан здесь: https://docs.ansible.com/ansible/include_role_module.html
В соответствии с документами он уже был введен в Ansible 2.2
Вот пример кода для использования зацикливания include_role на my_array:
- name: Use role in loop
include_role:
name: myrole
loop: "{{ my_array }}"