我写了一个简单的剧本来安装httpd。这是我的剧本:
---
- name: install httpd
hosts: localhost
become: root
vars:
inputvariable: "{{lookup('file','/home/ec2-user/inputfile.json')}}"
tasks:
- yum:
name: "{{item.packagename}}"
state: "{{item.state}}"
with_items: '{{ inputvariable.resources}}'
这是我的输入文件:
{
"resources":[
{
"packagename": "httpd",
"state": "present"
}
]
}
问题是当我从控制台执行以下命令执行playbook时,它成功执行。
ansible-playbook -vvv -C -e "ansible_python_interpreter=/usr/bin/python" apacheplaybook.yml
但是在Jenkins中执行它会显示以下错误:
“msg”:“此模块需要rpm的python2绑定。此模块需要python2 yum模块”}
我正在运行Jenkins作为ec2用户,我已经将/var/lib/jenkins
和/var/log/jenkins
&/var/cache/jenkins
的所有者船改为ec2-user和wheel group。问题是Jenkins从控制台使用此命令成功执行。
是否有可能jenkins无法访问python2绑定,因为它将python3作为其默认值,因此yum任务无法执行。
如果您切换到:
- name: install httpd
package: pkg={{item}} state=installed
with_items:
- packagenamehere
也许你可以访问cli到python2而不是jenkins(我假设你在同一服务器jenkins上执行cli)