2016-08-19 9 views
6

Czy można zastosować listę pozycji do wielu zadań w książce Ansible? Aby podać przykład:Zastosuj with_items w wielu zadaniach

- name: download and execute 
    hosts: server1 
    tasks: 
    - get_url: url="some-url/{{item}}" dest="/tmp/{{item}}" 
    with_items: 
    - "file1.sh" 
    - "file2.sh" 
    - shell: /tmp/{{item}} >> somelog.txt 
    with_items: 
    - "file1.sh" 
    - "file2.sh" 

Czy jest jakaś składnia, aby uniknąć powtarzania pozycji-listy?

Odpowiedz

7

Od dziś można korzystać z includewith_items, więc trzeba by podzielić playbook na dwa pliki:

- name: download and execute 
    hosts: server1 
    tasks: 
    - include: subtasks.yml file={{item}} 
    with_items: 
    - "file1.sh" 
    - "file2.sh" 

i subtasks.yml:

- get_url: url="some-url/{{file}}" dest="/tmp/{{file}}" 
- shell: /tmp/{{file}} >> somelog.txt 

Jest request aby with_items dotyczy block, ale nadal nie jest zaimplementowany.

4

Istnieje możliwość zdefiniowania listy yaml w pliku zmienne:

--- 
myfiles: 
- "file1.sh" 
- "file2.sh" 
... 

a następnie można użyć

with_items: "{{ myfiles }}" 

w zadaniu.