> 文章列表 > ansible实施处理程序和任务失败

ansible实施处理程序和任务失败

ansible实施处理程序和任务失败

实施处理程序

处理程序是响应由其他任务触发的通知的任务,仅当任务在受管主机上发生的内容更改时,任务才会通知处理程序。处理程序会在play中所有任务完成后运行一次。

处理程序可视为非活动任务,只有使用notify语句调用时才会触发。

处理程序始终按照相关play的handlers部分指定的顺序运行,不按notify语句顺序运行,或者按任务通知的顺序运行。

如果包含notify语句的任务没有报告changed结果,则处理程序不会获得通知,处理程序将被跳过,直到由任务通知,只有任务报告了changed状态才会通知处理程序

处理任务失败

忽略任务失败

默认情况下任务失败时该play会终止运行,关键字ignore_errors可以实现忽略失败的任务。

ignore_errors: yes

任务失败后强制执行处理程序

在paly中设置关键字force_handlers , 可以在任务失败后继续调用处理程序

force_handlers: yes

指定任务失败的条件

使用关键字failed_when可以指定任务失败的条件

fail模块也用于强制任务失败

指定报告changed结果时间

changed_when关键字可用于控制任务在何时报告它已进行了更改,抑制这种更改需设置:changed_when: false,以便仅报告ok或failed

ansible块

ansible playbook中,block块是对任务进行逻辑分组的字句,可用于控制任务执行方式,使用when关键字可以将条件应用到任务。

rescue和always语句用来处理错误,块中任务执行失败时,执行rescue块中的任务进行恢复

block:定义要运行的主要任务

rescue:定义在block字句中任务失败时运行的任务

always:定义始终独立运行的任务,不论block和rescue中定义的任务是否失败