Применить с элементами на нескольких задачах
Можно ли применить список элементов к нескольким задачам в Ansible playbook? Приведем пример:
- 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"
Есть ли какой-то синтаксис, чтобы избежать повторения списка элементов?
2 ответов:
На сегодняшний день вы можете использовать
with_itemsсinclude, поэтому вам нужно разделить свой playbook на два файла:- 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Есть запрос, Чтобы сделать
with_itemsприменимым кblock, но он все еще не реализован.
У вас есть возможность определить список yaml в файле переменных:
--- myfiles: - "file1.sh" - "file2.sh" ...А затем вы можете использовать
with_items: "{{ myfiles }}"В задаче.
Comments