此文章为「ansible笔记(2)之常用模块」的子文章。
我们知道,在执行 playbook 时,如果 playbook 中的任何一个任务执行失败,playbook 都会停止运行,除非这个任务设置了 ignore_errors: true
,在任务没有设置 ignore_errors: yes
的情况下,任务执行失败后,playbook 就会自动终止。
而 fail 模块天生就是一个用来执行失败的模块,当 fail 模块执行后,playbook 就会认为有任务失败了,从而终止运行,实现我们想要的中断效果,来看一个小示例:
如上例所示,上例 playbook 中一共有 2 个 debug 任务,在第 1 个 debug 任务之后,我们调用了 fail 模块,那么我们来运行一下上例 playbook,执行后输出信息如下:
从上图可以看出,当前两个 debug 模块输出了对应的信息后,playbook 报错了,之后的 debug 模块并未被调用,实现了中断剧本运行的效果,当执行 fail 模块时,fail 模块默认的输出信息为 Failed as requested from task
,我们可以通过 fail 模块的 msg 参数自定义报错的信息,示例如下:
执行效果如下:
当然,上述示例只是为了介绍 fail 模块的用法,我们通常并不会毫无理由的想要去中断 playbook,通常需要对某些条件进行判断,如果条件满足,则中断剧本,所以,fail 模块通常与 when
结合使用,比如,如果之前模块执行后的标准输出信息中包含字符串 error
,则认为中断剧本的条件成立,就立即调用 fail 模块,以中断 playbook 的执行。
评论区