Ansible 如何阻止playbook进一步运行?

Ansible 如何阻止playbook进一步运行?,ansible,Ansible,我正在写剧本来运行脚本。该脚本停止多个服务。我想如果任何服务无法停止,playbook不应该在更多服务器上继续。我如何做到这一点 下面是我的剧本(脚本名为/opt/stopper.sh) Task关键字将执行您想要的操作,您应该使用is failed而不是.rc输出,因为任务可能会由于一系列原因而失败 您还需要确保/opt/stopper.sh如果不能执行它应该执行的操作,那么它确实会使用非零退出代码退出,通常是将set-e放在脚本的顶部,这始终是一个强烈建议的默认值 也就是说,如果您的剧本能够

我正在写剧本来运行脚本。该脚本停止多个服务。我想如果任何服务无法停止,playbook不应该在更多服务器上继续。我如何做到这一点

下面是我的剧本(脚本名为/opt/stopper.sh)

Task关键字将执行您想要的操作,您应该使用
is failed
而不是
.rc
输出,因为任务可能会由于一系列原因而失败

您还需要确保
/opt/stopper.sh
如果不能执行它应该执行的操作,那么它确实会使用非零退出代码退出,通常是将
set-e
放在脚本的顶部,这始终是一个强烈建议的默认值

也就是说,如果您的剧本能够以脚本无法确定的方式确定失败(例如,
/tmp/out
包含“egad”或其他内容),那么您可以使用适当的,
然后将
any\u errors\u fatal:
移动到播放级别(或者,我猜将其复制到新的
fail:
任务)

要停止多个服务,最好使用模块。
---
- hosts: dev
  become: true
  become_user: root
  tasks:
  - name: Stopping Services
    shell: /opt/stopper.sh > /tmp/out 2>&1
    register: app_check
  - debug: msg="Services stopped"
    when: app_check.rc == 0
  - name: Log Message for Stopper
    command: cat /tmp/out
    register: mylog
  - debug: msg="{{ mylog.stdout_lines }}"