以[用户]身份从Jenkins运行Ansible

时间:2017-12-04 05:13:16

标签: jenkins ansible

我有一个正在运行的Ansible环境(带有环境变量,动态库存)和多个脚本。最近我将Jenkins添加到同一台服务器上,以便简化自动化。

当我在Jenkins中运行游戏时,我注意到ansible playbooks现在以'jenkins'而不是'ansible'用户的身份运行。

'jenkins'用户无法完全访问ansible环境变量或动态库存(为'ansible'用户编写)。我想将所有剧本作为原始编码的'ansible'运行。

Jenkins是否存在这样的概念,如果存在,该如何?

以下网址提供了解决方法。但这看起来更像是一个黑客。 https://issues.jenkins-ci.org/browse/JENKINS-37063

我不想更改任何环境变量或移动文件。

3 个答案:

答案 0 :(得分:1)

我认为在该服务器上你可以创建一个linux组并将Jenkins和Ansible用户添加到它。

这可能会让Jenkins用户访问运行ansible playbooks。

但是对于这种情况,我认为最好的方法是将Jenkins和Ansible保留在不同的服务器中,然后你可以将Ans Ans作为Jenkins的奴隶,然后你可以配置jenkins使用ansible用户运行plabooks。

答案 1 :(得分:1)

我找到了一种将Jenkins作为我最初的Ansible用户运行的方法:

编辑/etc/default/jenkins文件并更改

JENKINS_USER=ansible 
JENKINS_GROUP=ansible 

变量到您的首选名称。我使用ansible作为我的用户来运行我所有的ansible脚本。保存文件并更改文件夹所有者,如下所示。

chown -R ansible:ansible /var/lib/jenkins 
chown -R ansible:ansible /var/cache/jenkins
chown -R ansible:ansible /var/log/jenkins

重新启动服务后,Jenkins将以新用户身份启动。

请勿将 NAME 变量更改为与Jenkins文件夹/配置结构密切相关的变量。

然后,我可以通过在同一台机器上运行的Jenkins界面启动我的所有Ansible脚本。

答案 2 :(得分:0)

我知道这篇文章太旧了,但是我使用jenkins用户在jenkins服务器中安装了ansible: sudo su-jenkins -s / bin / bash首先与该用户共享,然后使用 sudo yum install ansible ,因此jenkins用户有权执行ansible安装,配置和执行ansible命令。

  

相同的概念适用于ssh的ansible-galaxy和ssh-genkey   无密码连接

。这样,jenkins可以使用jenkins用户在管道执行期间触发对ansible的调用。我希望它对寻求解决方法的新人有用。