gpt4 book ai didi

ansible - 如何在没有错误的情况下退出 Ansible 播放

转载 作者:行者123 更新时间:2023-12-02 04:45:27 25 4
gpt4 key购买 nike

当我满足特定条件时,我想退出而不出现错误(我知道 assertfail 模块)。以下代码退出但失败:

  tasks:

- name: Check if there is something to upgrade
shell: if apt-get --dry-run upgrade | grep -q "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded"; then echo "no"; else echo "yes"; fi
register: upgrading

- name: Exit if nothing to upgrade
fail: msg="Nothing to upgrade"
when: upgrading.stdout == "no"

最佳答案

自 Ansible 2.2 起,您可以将 end_playmeta 一起使用模块:

- meta: end_play

您还可以指定when来有条件地结束播放:

- meta: end_play
when: upgrading.stdout == "no"

但请注意,无论比赛是否实际结束,该任务都不会列在 ansible-playbook 的输出中。此外,该任务不计入回顾中。所以,你可以这样做:

- block:
- name: "end play if nothing to upgrade"
debug:
msg: "nothing to upgrade, ending play"

- meta: end_play
when: upgrading.stdout == "no"

只有满足条件时,才会在结束前宣布比赛结束。如果不满足条件,您将看到名为end play if Nothing to Upgrade的任务被适本地跳过,这将为用户提供更多信息,说明游戏为何结束或未结束.

当然,这只会结​​束当前的播放,而不是剧本中的所有剩余播放。

<小时/>

2019 年 6 月 20 日更新:

正如评论中 reto 提到的,end_play 结束所有主机的播放。在 Ansible 2.8 中,end_host 添加到 meta :

end_host (added in Ansible 2.8) is a per-host variation of end_play. Causes the play to end for the current host without failing it.

<小时/>

2021 年 2 月更新:修复了元模块的损坏链接

关于ansible - 如何在没有错误的情况下退出 Ansible 播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36451793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com