Ansible Post任务执行条件

我想知道,在哪种情况下Ansible post_task将被执行? 如果前期任务或angular色出现任何故障,后期任务是否会被执行?

例如,我想清理服务器,当且仅当它停止。 在下面的脚本中,如果服务器未正确停止, server_dir会被删除吗?

 --- - hosts: webservers pre_tasks: - shell: echo 'stopping server...' roles: - { role: stop_server } post_tasks: - file: path="{{ server_dir }}" state=absent 

当以前的任务失败时(意味着任务的返回码不是0), post_tasks下的任务将不会执行。 这是Ansible的默认行为,也是Ansibledevise的一部分:

Ansible实际上被devise成一个“快速失败”和有序的系统[…]

Ansible test_strategies

fail-fast意味着一旦一个任务失败,Ansible将会停止整个游戏的执行(只要你没有设置任务的ignore_errors: True参数)。

关于post_tasks的文档是不完整的,但如果你自己写一个小的testing剧本和angular色,你会看到Ansible的performance如预期。

这是有道理的,因为您可能希望使用pre_taskspost_tasks从群集中删除节点并将其添加到群集中,并且当angular色没有执行错误时,您不希望将节点添加到群集中。