Ansible:如果一个剧本中的任务失败,而一个剧本中的多个剧本失败,则不会执行更多剧本

Ansible:如果一个剧本中的任务失败,而一个剧本中的多个剧本失败,则不会执行更多剧本,ansible,Ansible,我有一本包含多个剧本的剧本,如下所示 -名称:play1 主持人:host1 任务: -命令:dgfdgd -姓名:play2 主持人:host2 任务: -命令:ls 我得到的输出如下所示 PLAY[play1]***************************************************************************************** 任务[收集事实]********************************************

我有一本包含多个剧本的剧本,如下所示

-名称:play1
主持人:host1
任务:
-命令:dgfdgd
-姓名:play2
主持人:host2
任务:
-命令:ls
我得到的输出如下所示

PLAY[play1]*****************************************************************************************
任务[收集事实]*******************************************************************************
ok:[10.15.23.76]
任务[命令]***************************************************************************************
致命:[10.15.23.76]:失败!=>{“changed”:false,“cmd”:“dgfdgd”,“msg”:“[Errno 2]没有这样的文件或目录”,“rc”:2}
重演*******************************************************************************************
10.155.23.76:确定=1更改=0无法访问=0失败=1跳过=0获救=0忽略=0
我希望两个剧本都能执行,即使其中一个剧本未能执行。如果我使用ignore_errors:yes,它将执行,但我还希望失败的错误显示在播放回放摘要中

请对此提供任何支持。

使用阻塞和救援。比如剧本

shell>cat playbook.yml
-姓名:play1
主机:本地主机
任务:
-区块:
-命令:/bin/true
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
-区块:
-命令:/bin/false
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-姓名:play2
主机:本地主机
任务:
-区块:
-命令:/bin/false
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-姓名:play3
主机:本地主机
任务:
-区块:
-命令:/bin/true
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
-调试:
瓦尔:我的孩子被救了
给出(节略)

任务[调试]*****************************************************************
确定:[本地主机]=>
我的儿子:“2”
重演*******************************************************************
localhost:确定=5更改=2不可访问=0失败=0跳过=0获救=2忽略=0

问:“有没有办法将我的_添加到失败计数中?”

答:
PLAY RECAP
统计值在playbook级别不可用。这种对剧本结果的评估应该在剧本之外进行。例如在脚本、AWX等中

例如下面的脚本

shell>cat playbook.sh
#!/bin/bash
out=$(ansible playbook playbook.yml 2>&1| tail-2)
主机=$(echo$out | cut-d':'-f1 | xargs)
结果=$(echo$out | cut-d':'-f2)
ok=$(回显$results | cut-d'-f1 | cut-d'='-f2)
更改=$(回显$results | cut-d'-f2 | cut-d'='-f2)
无法访问=$(回显$results | cut-d'-f3 | cut-d'='-f2)
失败=$(回显$results | cut-d'-f4 | cut-d'='-f2)
跳过=$(回显$results | cut-d'-f5 | cut-d'='-f2)
获救=$(回显$results | cut-d'-f6 | cut-d'='-f2)
忽略=$(回显$results | cut-d'-f7 | cut-d'='-f2)
printf“$host:ok=$ok changed=$changed unreachable=$unreachable”\
失败=$failed skipped=$skipped Resculated=$Resculated ignored=$ignored\n“
给予

使用封锁和救援。比如剧本

shell>cat playbook.yml
-姓名:play1
主机:本地主机
任务:
-区块:
-命令:/bin/true
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
-区块:
-命令:/bin/false
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-姓名:play2
主机:本地主机
任务:
-区块:
-命令:/bin/false
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-姓名:play3
主机:本地主机
任务:
-区块:
-命令:/bin/true
救援:
-设定事实:
my_saved:“{my_saved |默认值(0)| int+1}”
-调试:
瓦尔:我的孩子被救了
给出(节略)

任务[调试]*****************************************************************
确定:[本地主机]=>
我的儿子:“2”
重演*******************************************************************
localhost:确定=5更改=2不可访问=0失败=0跳过=0获救=2忽略=0

问:“有没有办法将我的_添加到失败计数中?”

答:
PLAY RECAP
统计值在playbook级别不可用。这种对剧本结果的评估应该在剧本之外进行。例如在脚本、AWX等中

例如下面的脚本

shell>cat playbook.sh
#!/bin/bash
out=$(ansible playbook playbook.yml 2>&1| tail-2)
主机=$(echo$out | cut-d':'-f1 | xargs)
结果=$(echo$out | cut-d':'-f2)
ok=$(回显$results | cut-d'-f1 | cut-d'='-f2)
更改=$(回显$results | cut-d'-f2 | cut-d'='-f2)
无法访问=$(回显$results | cut-d'-f3 | cut-d'='-f2)
失败=$(回显$results | cut-d'-f4 | cut-d'='-f2)
跳过=$(回显$results | cut-d'-f5 | cut-d'='-f2)
获救=$(回显$results | cut-d'-f6 | cut-d'='-f2)
忽略=$(回显$results | cut-d'-f7 | cut-d'='-f2)
printf“$host:ok=$ok changed=$changed unreachable=$unreachable”\
失败=$failed skipped=$skipped Resculated=$Resculated ignored=$ignored\n“
给予


这就是(和rescue)的目的。如果我们将错误添加到rescue中,如何获得错误计数?是否有办法获取失败计数?请参阅播放R
shell> ./playbook.sh 
localhost: ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=2 ignored=0