You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:53:17