Один цикл для нескольких задач Ansible

Я создал сценарий Ansible, который создает экземпляр облака, а затем устанавливает на нем некоторые программы. Я хочу запустить эту книгу несколько раз (без использования сценария bash). Можно ли использовать цикл для одновременного выполнения этих двух задач (например, один цикл для двух задач?). Все, что мне удалось найти, это один цикл для каждой отдельной задачи.


person AverageWorker    schedule 11.06.2015    source источник
comment
Жаль, что вы не можете использовать with_items с блоками, что похоже на это было бы идиоматическим способом сделать это.   -  person Nick Chammas    schedule 15.09.2017


Ответы (3)


Нет, в настоящее время это невозможно. with_items раньше работал с оператором include в предыдущих версиях Ansible, но, к сожалению, был удален.

Хотя он будет возвращен в Ansible 2.0, см. Слайд 14/15 в Что нового в версии 2 - AnsibleFest London 2015

введите описание изображения здесь

Вы можете попробовать работать с веткой v2 из github, эта функция должна быть доступна там .

Что вы можете сделать с помощью 1.9.1, так это переместить свои задачи в роль и несколько раз ссылаться на эту роль в своем учебнике.

person udondan    schedule 11.06.2015
comment
Чувак, а что со скриншотом? - person masterial; 12.05.2018

Обновление:

В 2.0 вы можете использовать with_ циклы и включения задач (но не включения в playbook), это добавляет возможность перебирать набор задач за один раз. Следует помнить о нескольких вещах: включенная задача, имеющая собственный цикл with_, перезапишет значение специальной переменной элемента. Поэтому, если вам нужен доступ как к элементу include, так и к элементу текущей задачи, вы должны использовать set_fact для создания псевдонима для внешнего элемента:

- include_tasks: 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.

person Wtower    schedule 01.02.2016
comment
Это было улучшено в версии 2.1, с возможностью указания другого имени переменной для внешнего цикла - см. раздел управления циклом документации Ansible. В том же разделе есть соответствующие улучшения в 2.2. - person RichVel; 30.11.2016