Один цикл над несколькими задачами 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