我在jenkins创建了一份工作,我想用ansible构建项目。我想在几个主机上运行我的命令(这就是我使用ansible的原因)。当我尝试运行该项目时,它失败并出现一些权限错误:
/home/ubuntu/install.sh -s -U ubuntu -f 5
FATAL: command execution failed
java.io.IOException: Cannot run program "/usr/bin/ansible" (in directory "/var/lib/jenkins/jobs/Standard Demo/workspace"): error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at hudson.Proc$LocalProc.<init>(Proc.java:244)
at hudson.Proc$LocalProc.<init>(Proc.java:216)
你知道问题是什么吗?我以管理员用户身份登录jenkins服务器。
答案 0 :(得分:0)
这不是Ansible问题,它是Jenkins中的配置问题。正如其他人所指出的,默认情况下,Jenkins将作为“普通用户”运行(通常为jenkins
)。这是用户的作业和步骤(包括你正在调用的shell脚本)将作为。在您的情况下,此用户没有足够的权限来运行Ansible。
我不建议更改此默认用户,因为a。这种设置有很好的安全性原因,b。这样做实际上很复杂,因为您必须解决所有Jenkins的权限问题以匹配新用户。但是,在脚本构建步骤中执行诸如运行sudo
之类的操作非常容易。只需使用该工具(以及正确配置的/etc/sudoers
)即可获得构建期间所需的权限。