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

AWX调用共享Git角色失败:无法找到acme.users角色求助

问题解决:Ansible无法找到共享仓库中的角色

问题根源

通过requirements.yml拉取名为acme的Git仓库后,Ansible会将整个仓库下载到/runner/requirements_roles目录,但你的users角色存放在仓库内的roles/users子路径下。Ansible默认只会搜索角色路径下的直接子目录作为角色,不会递归识别嵌套的roles文件夹,因此无法通过acme.users的方式找到该角色。

解决方案

方案1:在Playbook中指定额外角色路径

直接在Playbook头部添加roles_path,指向acme仓库内的roles目录,之后直接引用users角色即可:

---
- name: Playbooks that calls a role from the shared repo
  hosts: all
  gather_facts: false
  roles_path:
    - /runner/requirements_roles/acme/roles
  roles:
    - role: users

方案2:修改requirements.yml直接拉取目标角色

调整requirements.yml,指定从acme仓库的roles/users路径拉取角色,这样Ansible会直接将users角色下载到默认搜索路径:

- src: https://REDACTED
  scm: git
  version: main
  name: users
  path: roles/users

之后Playbook中直接引用:

roles:
  - role: users

方案3:调整acme仓库的目录结构

如果允许修改共享仓库,将users角色移到acme仓库的根目录(删除原roles文件夹,把users的内容直接放在仓库根)。拉取后,Ansible会识别acme为角色,Playbook中引用:

roles:
  - role: acme

方案4:在AWX中配置全局角色路径

在AWX的项目设置中,添加环境变量ANSIBLE_ROLES_PATH,将/runner/requirements_roles/acme/roles加入其中。这样所有该项目下的Playbook都会自动搜索这个路径,无需在每个Playbook中单独配置。

内容的提问来源于stack exchange,提问作者Werner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:32:33