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

Jenkins ansible-plugin运行playbook报错找不到ansible.kubernetes-modules角色

问题根因分析
  • 核心问题为Ansible角色查找路径与执行用户不匹配:你本地手动执行playbook时使用的是oassaghir用户上下文,ansible.kubernetes-modules角色安装在该用户对应的Ansible搜索路径下(通常为~/.ansible/roles/、公共系统路径或项目本地roles目录);但Jenkins服务默认以jenkins系统用户运行,报错信息已明确列出Jenkins用户的角色搜索路径为/var/lib/jenkins/workspace/ansible-demo/roles:/var/lib/jenkins/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles,该路径下未安装目标角色。
  • 补充说明:你在playbook中配置的become_user: oassaghir仅作用于playbook任务执行阶段,Ansible加载角色的动作发生在启动playbook的初始阶段,此时仍使用启动命令的Jenkins用户上下文,因此无法读取oassaghir用户下的角色文件。

你可执行以下命令验证该问题:

sudo -u jenkins ansible-galaxy list | grep ansible.kubernetes-modules

若输出为空即可确认角色未安装在Jenkins用户的搜索路径中。

解决方案

方案1:将角色安装到公共或Jenkins用户专属路径

安装到所有用户均可访问的公共路径:

sudo ansible-galaxy install ansible.kubernetes-modules -p /usr/share/ansible/roles/

或仅安装到Jenkins用户的专属角色路径:

sudo -u jenkins ansible-galaxy install ansible.kubernetes-modules

方案2:将角色纳入项目代码仓库

将ansible.kubernetes-modules角色文件放到项目的roles/目录下,与playbook一同提交到代码仓库,Jenkins拉取代码后可直接在项目工作目录下找到角色,无需在Jenkins节点额外配置。

方案3:调整Jenkins Ansible插件执行参数

在Jenkins的Ansible构建步骤的额外参数栏添加--become --become-user oassaghir,让ansible-playbook命令启动时就切换到oassaghir用户,加载角色时使用该用户的路径配置。需提前配置jenkins用户可免密切换到oassaghir用户执行命令的sudo权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:39:02