Ansible повторяет попытки с элементами

#ansible

#ансибль

Вопрос:

Я пытаюсь повторно запустить задачу с элементами, если она завершается неудачей, код, который у меня есть сейчас, таков:

   - name: Start services
    shell:  start....... {{item}}
    with_items: "{{ files }}"
    retries: 3
    delay: 3
    register: result
    until: result.rc == 0
 

Что это делает, он проходит по списку, и если пункт 3 завершается неудачно, он повторит попытку пункта 3, 3 раза.
Но что я хотел бы иметь, так это то, что если пункты 3 терпят неудачу, он переходит к пункту 4 и т. Д. И в конце повторяет пункт 3 (не имеет значения, повторит ли он пункты 1,2, 4 и т. Д., Это не повлияет)
как это можно сделать?

Отредактируйте, чтобы лучше объяснить это, поэтому я хотел бы, чтобы он выполнялся по всем элементам, и в конце, если один или несколько элементов вышли из строя, повторите все элементы 3 раза. (так что не запускайте один элемент при повторной попытке, а по всем из них), и если он все равно завершится неудачей, завершите задачу

Комментарии:

1. What this does it runs over the list and if item 3 fails it will retry item 3, 3 times. это именно то, чего и следовало ожидать. Что вы можете попробовать ignore_errors , так это перейти к пункту 4 даже после того, как пункт 3 не удался при 3-й попытке. Ваше требование не соответствует ни одному из известных мне функций ansible, и вам придется реализовать это полностью самостоятельно (я полагаю, с цепочкой задач, зацикливающихся на предыдущем результате задачи). И, честно говоря, я не думаю, что я точно понял, что вы хотите сделать.

2. Удалите цикл и выполните итерацию по списку shell: start....... {{ files }} .

3. Столкнулся с аналогичной проблемой. Пример использования: настройте список пользователей. При первом проходе может не получиться настроить пользователя A, поскольку его UID назначен пользователю B. Если ansible продолжит, пользователь B будет обновлен, чтобы использовать его правильный UID, после чего пользователь A может быть настроен на втором проходе.