如果ansible中的rc==0,则运行处理程序播放并退出播放
嗨,有没有一种方法可以运行处理程序播放,然后在rc==0时退出播放。它只能使用failed_when退出播放,如果rc!=0我无法让notify:Service Guard执行。使用了其他方法,如创建2个play notify和exit no luck如果ansible中的rc==0,则运行处理程序播放并退出播放,ansible,Ansible,嗨,有没有一种方法可以运行处理程序播放,然后在rc==0时退出播放。它只能使用failed_when退出播放,如果rc!=0我无法让notify:Service Guard执行。使用了其他方法,如创建2个play notify和exit no luck - name: Exit SG server from play command: /usr/local/cmcluster/bin/cmversion register: sg_check notify: Service Guard
- name: Exit SG server from play
command: /usr/local/cmcluster/bin/cmversion
register: sg_check
notify: Service Guard
failed_when: sg_check.rc == 0
这是我尝试过的新代码
- name: Check if Service Gurad then exit
command: /usr/local/cmcluster/bin/cmversion
register: sg_check
notify: Service Guard
changed_when: sg_check.rc == 0
ignore_errors: true
- meta: end_play
when: sg_check.rc == 0
但我明白了:
错误!条件检查“sg_check.rc==0”失败。错误为:计算条件时出错(sg\u check.rc==0):“sg\u check”未定义
错误似乎出现在“/home/ansible/linuxpatchingv2/roles/applyPatch/tasks/main.yml”中:第9行第3列,但可能是
根据确切的语法问题,在文件中的其他位置
令人不快的一行似乎是:
忽略错误:true
- 梅塔:结束比赛 ^这里
更改
和失败
。这两项行动必须分开。例如,在下面的剧本中,命令将成功,通知处理程序,并结束剧本
shell>cat pb.yml
-主机:本地主机
收集事实:错误
任务:
-命令:“{cmd | default('/bin/true')}”
寄存器:sg_check
通知:服务警卫
更改时:sg_check.rc==0
忽略错误:true
-梅塔:结束比赛
时间:sg_check.rc==0
-调试:
msg:继续吗
处理程序:
-姓名:保安
调试:
消息:通知服务守卫
给出(节略)
shell>ansible剧本pb.yml
...
正在运行的处理程序[服务守卫]****
确定:[本地主机]=>
消息:通知服务守卫
重演****
localhost:确定=2更改=1不可访问=0失败=0跳过=0获救=0忽略=0
如果命令失败,相同的剧本将继续。比如说
shell>ansible playbook pb.yml-e“cmd=/bin/false”
播放[本地主机]****
任务[命令]****
致命:[localhost]:失败!=>更改=错误
命令:
-/bin/false
增量:“0:00:00.003035”
完:2020-08-2409:33:22.039762
msg:非零返回码
rc:1
开始:“2020-08-2409:33:22.036727”
stderr:'
标准线路:
标准输出:“”
标准输出线:
…忽略
任务[调试]****
确定:[本地主机]=>
msg:继续吗
重演****
localhost:ok=2已更改=0不可访问=0失败=0跳过=0已获救=0已忽略=1
我无法重现“错误”。如果我将其放在角色任务中会有区别吗?我想这就是为什么你不能重现错误,因为我的错误在角色中?