Ansible: как перебирать роль с массивом?

Можно ли вызвать роль несколько раз в цикле следующим образом:

vars:
  my_array:
    - foo
    - bar
    - baz 
roles:
  - role: foobar
    with_items: my_array

Как мы можем это сделать?

Ответы

Ответ 1

Теперь поддерживается Ansible 2.3.0:

- name: myrole
      with_items:
        - "aone"
        - "atwo"
      include_role:
        name: myrole
      vars:
        thing: "{{ item }}"

Ответ 2

Там нет способа перебрать роль в настоящее время, но, как упоминалось в этом обсуждении в группе 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 }}" }

Ответ 4

Вот пример кода для использования зацикливания include_role на my_array:

- name: Use role in loop
  include_role:
    name: myrole
  loop: "{{ my_array }}"