我有一个正在运行的Ansible环境(带有环境变量,动态库存)和多个脚本。最近我将Jenkins添加到同一台服务器上,以便简化自动化。
当我在Jenkins中运行游戏时,我注意到ansible playbooks现在以'jenkins'而不是'ansible'用户的身份运行。
'jenkins'用户无法完全访问ansible环境变量或动态库存(为'ansible'用户编写)。我想将所有剧本作为原始编码的'ansible'运行。
Jenkins是否存在这样的概念,如果存在,该如何?
以下网址提供了解决方法。但这看起来更像是一个黑客。 https://issues.jenkins-ci.org/browse/JENKINS-37063
我不想更改任何环境变量或移动文件。
答案 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的调用。我希望它对寻求解决方法的新人有用。