【问题标题】:How do I force ansible to retry an 'apt' task if it fails?如果失败,我如何强制 ansible 重试“apt”任务?
【发布时间】:2017-11-29 09:45:42
【问题描述】:

我有一个在许多机器上运行的ansible 剧本。在该剧本中,我尝试使用apt 安装一些软件包,但有时它们会失败,因为其他剧本正在运行、定期更新或任何其他apt 实例并行运行并获取锁。

我基本上想在放弃之前添加一个重试循环,但没有这样做,因为apt 不支持重试,显然:我查看了ansible's documentation 中的apt module 页面,甚至尝试实际使用即使它不存在(显然失败了)。

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

【问题讨论】:

  • 添加数据:我找到了一种在 apt 上进行重试和延迟的方法(缩进中缺少 2 个空格),但仍然缺少如何知道 apt 成功的部分。我认为检查 rc 是否为 0 就足够了,但事实并非如此。我可以依靠 stderr 为空吗?

标签: ubuntu ansible apt


【解决方案1】:

有通用的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2021-06-05
    • 2017-04-14
    • 2016-01-23
    • 2017-10-18
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多