Czy można nazwać rolę wielokrotnie w pętli tak:Ansible: Jak iterować nad rolą z tablicą?
vars:
my_array:
- foo
- bar
- baz
roles:
- role: foobar
with_items: my_array
Jak możemy to zrobić?
Czy można nazwać rolę wielokrotnie w pętli tak:Ansible: Jak iterować nad rolą z tablicą?
vars:
my_array:
- foo
- bar
- baz
roles:
- role: foobar
with_items: my_array
Jak możemy to zrobić?
teraz obsługiwany od Ansible 2.3.0:
- name: myrole
with_items:
- "aone"
- "atwo"
include_role:
name: myrole
vars:
thing: "{{ item }}"
Obecnie jest no way to loop over a role Obecnie, jak wspomniano w tej dyskusji Grup dyskusyjnych Google, można przekazać listę lub dyktować rolę, a następnie wewnętrznie ją przepuścić.
Zamiast więc można zrobić coś takiego:
# loop_role/tasks/main.yml
- name: debug item
debug: var="{{ item }}"
with_items: my_array
a następnie używać go tak:
- hosts: all
vars:
my_array:
- foo
- bar
- baz
roles:
- { role: loop_role, my_array: "{{ my_array }}" }
Moduł include_role
jest udokumentowane tutaj: https://docs.ansible.com/ansible/include_role_module.html
Według dokumentów został wprowadzony w Ansible 2.2 już
Post przykład kodu. Nie tylko link do zewnętrznego źródła –
@tomasbedrich możesz to sprawdzić? To nie działa dla mnie. –
Pamiętaj, że jeśli używasz pętli w "myrole", musisz dodać 'loop_control: loop_var: foo', aby uniknąć kolizji z wewnętrznymi pętlami. –