是否可以从 jinja2 检查任务是否重试

  • 本文关键字:是否 任务 重试 jinja2 ansible
  • 更新时间 :
  • 英文 :


我正在尝试在 Ansible 中实现详细重试模式逻辑,但我不确定这是否可能。

大多数情况下,我想做类似的事情

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

主要是命令第一次应该在没有 --debug 的情况下运行,如果失败,应该使用 --debug 参数再运行 2 次。

我知道我可以使用块/救援方法来实现调试部分,但这会增加更多的复杂性(在该示例中,现实生活中的场景并不那么简单(。

那么,有没有一种 jinja2 方法来检查我是哪个循环?我确信在任务结束之前没有定义结果,所以我无法查看它。

回答问题

有没有 jinja2 方法来检查我是哪个循环?

不。不是。此外,cmd 在启动模块时进行评估,以后无法更改。

似乎循环与index_var可能会有所帮助,因为下面的任务

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

将按照要求运行某个命令。问题是不可能打破循环,因为until: result is succeeded将独立地应用于每个迭代,而不是整个循环。

相关内容

最新更新