2016-08-19 24 views
6

Có thể áp dụng một danh sách các mục vào nhiều tác vụ trong một Playbook Ansible không? Để đưa ra ví dụ:Áp dụng with_items trên nhiều tác vụ

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

Có một số cú pháp để tránh sự lặp lại của danh sách mục không?

Trả lời

7

Tính đến hôm nay bạn có thể sử dụng with_items với include, vì vậy bạn sẽ cần phải chia playbook của bạn thành hai tập tin:

- 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 

Có một request để làm with_items áp dụng cho block nhưng vẫn chưa được triển khai.

4

Bạn có khả năng để xác định một danh sách yaml trong một tập tin biến:

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

và sau đó bạn có thể sử dụng

with_items: "{{ myfiles }}" 

trong nhiệm vụ.

Các vấn đề liên quan