Можно ли из jinja2 проверить, повторяется ли задание или нет? - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь реализовать логику повтора в подробном режиме в Ansible, но я не уверен, возможно ли это.

В основном я хочу сделать что-то вроде

- shell:
    cmd: some-command {{ if retries '--debug' }}
  register: result
  until: result is succeeded
  retries: 3

В основном команда должна запускаться без --debug в первый раз, а в случае неудачи она должна запускаться еще 2 раза с параметром --debug.

Я знаю, что мог бы использовать блочный / аварийный подход для реализациичасть отладки, но это добавило бы намного больше сложности (реальный сценарий не так прост в этом примере).

Итак, есть ли способ проверки jinja2, в каком цикле я?Я уверен, что результат не определен до завершения задачи, поэтому я не могу его просмотреть.

1 Ответ

0 голосов
/ 19 июня 2019

Чтобы ответить на вопрос

Есть ли способ проверки jinja2, в каком цикле я?

Нет.Это не.Более того, cmd оценивается при запуске модуля и не может быть изменен позже.

Может показаться, что Loop с index_var можетсправка, потому что задача ниже

- shell:
    cmd: "some-command {{ (item > 0)|ternary('--debug', '') }}"
  register: result
  loop: "{{ range(0, 3)|list }}"

будет запускать some-command в соответствии с запросом.Проблема в том, что невозможно разорвать цикл, поскольку until: result is succeeded будет применяться к каждой итерации независимо, а не ко всему циклу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...