我如何强制使用ansible重试一个' apt'任务如果失败了?

时间:2017-11-29 09:45:42

标签: ubuntu ansible apt

我在许多机器上运行了ansible个剧本。在该剧本中,我有一些我试图使用apt安装的软件包,但偶尔会失败,因为其他的Playbooks正在运行,定期更新或任何其他apt实例并行运行并抓住锁。

我基本上想要在放弃之前添加重试循环,但由于apt不支持重试,因此无法执行此操作,显然:我查看了ansible's documentation中的apt module页面,甚至试图实际使用它,即使它不存在(显然失败了)。

无论如何 - 我需要一个关于如何让ansible重试的想法,让我们说3次,延迟30秒,但仅限于安装软件包的失败。

1 个答案:

答案 0 :(得分:11)

有通用task results tests,因此您可以使用:

- apt:
    name: build-essential
    state: present
  register: apt_res
  retries: 5
  until: apt_res is success

With Ansible 2.4 and earlier use the filter syntax - this was deprecated in Ansible 2.5 and will be removed from 2.9

until: apt_res | success