当我们使用ansible-playbook执行playbook,我们可以指定一个或者多个playbook,而一个playbook中可以有多个play,这些play下面又会存在一个或者多个task,这些task会调用module去执行shell脚本,或者文件拷贝等等各种命令,具体可参考ansible playbook基本概念
我们知道在配置play的task时,可以配置pre_tasks, task和post_tasks,还可以配置roles,那这些task具体是怎么执行的呢?
下面这个图将解释具体执行过程
1.检查play中是否存在pre_tasks定义,存在的话则顺序执行pre_tasks中定义的所有tasks
2.如果存在pre_tasks定义,则检查是否存在触发handler,如存在则顺序执行相关触发handlers
3.检查是否存在roles定义,如存在则顺序执行roles下的所有tasks
4.检查是否存在task, 如存在则顺序执行所有定义的task
5.检查roles和task中是否存在触发handler,如存在顺序执行
6.检查是否存在post_tasks定义,存在则顺序执行post_tasks中定义的所有tasks
7.如果存在post_tasks,则检查post_tasks下面的tasks是否存在触发handlers,如存在则顺序执行