我有一个带有CentOS版本5.6 (Final)的机器运行“Ansible剧本”。我在目标机器上安装了simplejson,模块可以从python解释器中导入。但我的剧本还是失败了,出现了下面的错误。
Error: ansible requires a json module, none found!我正在确认由一个原始模块在运行时存在简单的json模块,如下所示。
---
-
gather_facts: false
hosts: "{{ host_group }}"
name: deploy
vars_files:
- "{{env}}.yml"
tasks:
- name: check python version
raw: python -c "import simplejson"
- name: "git checkout"
git: "repo={{repository}} dest={{base_dir}} version={{branch}}"第一步成功,没有任何问题,如下所示
TASK: [check python version] **************************************************
ok: [my-target-machine] => {"rc": 0, "stderr": "", "stdout": ""}但是,第二个错误由于上面提到的缺少json模块的错误而失败。
发布于 2015-04-28 13:17:32
之所以会发生这种情况,是因为您有两个版本的python:/usr/bin/python上的系统python和/usr/local/bin/python上的另一个python。如果第一个路径上的python是>=2.5,或者它的站点包中有simplejson,那么第一个任务将执行得很好。但是,如果您还没有在/usr/bin/python (简单易用sudo yum -y install python-simplejson)上为系统python安装simplejson,那么git任务可能会失败。
标准的不可访问模块总是使用#!/usr/bin/python shebang,git模块也不例外。
同时,来自不可信文件
默认情况下,Ansible假设它可以在远程系统上找到一个/usr/bin/ Python,它是Python的2.X版本,特别是2.4或更高版本。 在任何主机上设置库存变量‘ansible_python_interpreter’将允许Ansible自动替换执行python模块时使用的解释器。因此,如果系统上的/usr/bin/python不指向Python2.x解释器,则可以指向系统上的任何python。
https://stackoverflow.com/questions/29912420
复制相似问题