2015-11-13 3 views
3

Как можно играть в настольную игру Ansibleloop над чередой заданий? Я хочу реализовать цикл опроса, который выполняет последовательность задач, пока задача не будет успешной. Когда он терпит неудачу, обработчик исключений попытается исправить условие, а затем цикл повторит последовательность задач.Как может Ansible цикл над последовательностью задач?

Рассмотрим следующий воображаемый пример:

- action: 
    - block: 
     - debug: msg='i execute normally' 
     - command: /bin/foo 
     rescue: 
     - debug: msg='I caught an error' 
     - command: /bin/fixfoo 
     always: 
     - debug: msg="this always executes" 
    register: result 
    until: result 
    retries: 5 
    delay: 10 

ответ

4

В анзибль 1.x это просто не может быть сделано. Это просто не так.

анзибль 2.0 поддерживает зацикливание через включаемые файлы, так что вы можете поместить все свои задачи в одном файле, то сделать что-то вроде этого:

- include: test.yml 
    with_items: 
    - 1 
    - 2 
    - 3 

Однако я не верю любого из других конструкций вы упоминаете (register , until, retries, delay и т. Д.) Будет работать с этим. Хотя некоторые из них теоретически могут применяться ко всем задачам в файле include, такие как register и until, явно связаны с отдельными задачами. Нет смысла, чтобы несколько задач пытались зарегистрировать одну и ту же выходную переменную.

+0

Было бы целесообразно использовать до тех пор, пока с другими переменными, которые установлены внутри цикла включения. –

Смежные вопросы