Один цикл над несколькими задачами Ansible
Я создал загрузочную книгу Ansible, которая создает экземпляр облака, а затем устанавливает некоторые экземпляры экземпляра. Я хочу запускать этот плей-лист несколько раз (без использования bash script). Можно ли использовать цикл для объединения этих двух задач (I.E. Один цикл для двух задач?). Все, что мне удалось найти, - это один цикл для каждой отдельной задачи.
Ответы
Ответ 1
Нет, что в настоящее время невозможно. with_items
используется для работы с оператором include
в предыдущих версиях Ansible, но, к сожалению, был удален.
Хотя он будет возвращен в Ansible 2.0, см. слайд 14/15 Что нового в v2 - AnsibleFest London 2015
![enter image description here]()
Вы можете попробовать работать с веткой v2 из github, эта функция должна быть доступна там.
Что вы можете сделать с 1.9.1 - это переместить ваши задачи в роль и несколько раз ссылаться на эту роль в вашей книге.
Ответ 2
Обновление:
В версии 2.0 вы можете использовать циклы with_
и включать в нее задачи (но не в playbook), это добавляет возможность зацикливаться на множестве задач одним выстрелом. Есть несколько вещей, которые вам нужно иметь в виду: включенная задача, имеющая свой собственный цикл with_
, перезапишет значение специальной переменной элемента. Поэтому, если вы хотите получить доступ к элементу include и текущему элементу задач, вы должны использовать set_fact
для создания псевдонима для внешнего.:
- include: test.yml
with_items:
- 1
- 2
- 3
в test.yml:
- set_fact: outer_loop="{{item}}"
- debug: msg="outer item={{outer_loop}} inner item={{item}}"
with_items:
- a
- b
- c
Источник: Ansible Docs