Ansible - 在循环中重试失败的迭代

Posted

技术标签:

【中文标题】Ansible - 在循环中重试失败的迭代【英文标题】:Ansible - retry failed iterations in a loop 【发布时间】:2022-01-22 15:43:25 【问题描述】:

我有一个需要删除的实体列表,但如果我迭代循环太快,删除可能会失败,因为该操作只能连续完成,并且在删除之间需要大约 10 秒。所以,我正在这样做

- name:  Loop through removing all hosts
  shell: "echo yes | gravity remove --force  item "
  loop: " result.stdout_lines "
  loop_control:
    pause: 12

这通常可以正常工作,但是当 12 秒不够时,我偶尔可能会收到错误消息。我不想增加暂停,所以我想弄清楚如何测试和重试任何失败。

如果单个节点发生故障,则可以进行简单的额外暂停并重试。知道我该怎么做吗?

【问题讨论】:

【参考方案1】:

呃!我最初尝试了直到,但愚蠢地忘记了注册 var,所以它不起作用,但现在可以了

- name:  Loop through removing all hosts
  shell: "echo yes | gravity remove --force  item "
  register: result
  loop: " file_list.stdout_lines "
  loop_control:
    pause: 12
  retries: 2
  delay: 12
  until: result is not failed

【讨论】:

以上是关于Ansible - 在循环中重试失败的迭代的主要内容,如果未能解决你的问题,请参考以下文章

在循环中重试死锁,它们最终会解决吗?

如何使用 Mocha 在 Detox 中重试失败的端到端测试?

Xcode 构建因并发构建失败,将在 Flutter 中重试 2 秒

Ansible 学习总结—— Ansible 循环条件判断触发器处理失败等任务控制使用总结

Ansible 学习总结—— Ansible 循环条件判断触发器处理失败等任务控制使用总结

Ansible 中任务执行控制