2016-08-19 3 views
6

Можно ли применить список элементов к нескольким задачам в загружаемом файле Ansible? Например:Применить with_items к нескольким задачам

- 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" 

Есть ли какой-либо синтаксис, чтобы избежать повторения списка элементов?

ответ

7

На сегодняшний день вы можете использовать with_items с include, так что вы должны были бы разделить ваш сборник пьес на два файла:

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

и subtasks.yml:

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

Существует В request сделать with_items применимо к block, но оно все еще не реализовано.

4

У вас есть возможность определить список YAML в файле переменных:

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

, а затем вы можете использовать

with_items: "{{ myfiles }}" 

в задаче.