Ansible include_tasks未按文档搜索路径查找文件的问题
Ansible include_tasks 无法查找父角色任务文件的问题
根据Ansible文档说明,include_tasks应按以下顺序查找任务文件:当前角色tasks目录、父角色目录、最后是playbook目录,但实际测试中并未出现该行为。
复现场景
目录结构:
├── playbook.yml └── roles ├── parent │ └── tasks │ ├── main.yml │ └── callback.yml └── child └── tasks └── main.yml
playbook.yml
--- - hosts: all gather_facts: false roles: - parent
parent/tasks/main.yml
--- - include_role: role: child
child/tasks/main.yml
--- - include_tasks: file: 'callback.yml'
parent/tasks/callback.yml
--- - debug: msg: "HELLO from callback.yml"
执行结果与错误
执行命令 ansible-playbook playbook.yml 时,预期能找到父角色的callback.yml并输出HELLO信息,但实际报错:
TASK [child : include_tasks] ******************* task path: /home/cloud-user/test/roles/child/tasks/main.yml:5 fatal: [host]: FAILED! => { "reason": "Could not find or access '<path-to-playbook-folder>/tasks/parent_tasks.yml' on the Ansible Controller." }
排查信息
添加-vvvvv参数后,输出的ansible_search_path显示已包含父角色路径,但仍无法找到文件:
TASK [child : debug] ****************** task path: /home/cloud-user/test/roles/child/tasks/main.yml:2 ok: [host] => { "ansible_search_path": [ "/home/cloud-user/test/roles/child", "/home/cloud-user/test/roles/parent", "/home/cloud-user/test/roles/child/tasks", "/home/cloud-user/test" ] }
已尝试使用tasks/callback.yml路径及fileglob查找方式,均无效。
疑问
请问是我对文档中搜索路径的理解有误,还是Ansible本身存在问题?
内容的提问来源于stack exchange,提问作者John Elion
相关产品推荐
相关产品推荐

