缺少 SimpleJson 模块
Missing SimpleJson Module
我有 Ansible 剧本 运行 针对装有 CentOS 5.6(最终版)的机器。
我在目标机器上安装了 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 模块的错误。
这可能是因为您有两个版本的 python:系统 python 在 /usr/bin/python
和另一个 python 可能在 /usr/local/bin/python
。如果 first-on-path python 是 >=2.5 或者在其站点包中有 simplejson,则第一个任务将执行正常。但是,如果您没有在 /usr/bin/python
为系统 python 安装 simplejson(最简单的是 sudo yum -y install python-simplejson
),那么 git
任务可能会失败。
标准ansible模块总是使用#!/usr/bin/python
shebang,git module也不例外。
此外,来自 ansible documentation:
By default Ansible assumes it can find a /usr/bin/python on your remote system that is a 2.X version of Python, specifically 2.4 or higher.
Setting of an inventory variable ‘ansible_python_interpreter’ on any host will allow Ansible to auto-replace the interpreter used when executing python modules. Thus, you can point to any python you want on the system if /usr/bin/python on your system does not point to a Python 2.X interpreter.
我有 Ansible 剧本 运行 针对装有 CentOS 5.6(最终版)的机器。 我在目标机器上安装了 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 模块的错误。
这可能是因为您有两个版本的 python:系统 python 在 /usr/bin/python
和另一个 python 可能在 /usr/local/bin/python
。如果 first-on-path python 是 >=2.5 或者在其站点包中有 simplejson,则第一个任务将执行正常。但是,如果您没有在 /usr/bin/python
为系统 python 安装 simplejson(最简单的是 sudo yum -y install python-simplejson
),那么 git
任务可能会失败。
标准ansible模块总是使用#!/usr/bin/python
shebang,git module也不例外。
此外,来自 ansible documentation:
By default Ansible assumes it can find a /usr/bin/python on your remote system that is a 2.X version of Python, specifically 2.4 or higher.
Setting of an inventory variable ‘ansible_python_interpreter’ on any host will allow Ansible to auto-replace the interpreter used when executing python modules. Thus, you can point to any python you want on the system if /usr/bin/python on your system does not point to a Python 2.X interpreter.