2015-04-28 153 views
0

我有Ansible playbook運行CentOS版本5.6(最終)的機器。 我在目標機器上安裝了simplejson,模塊可以從python解釋器導入。 但我的劇本仍然失敗,出現以下錯誤。缺少SimpleJson模塊

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模塊的錯誤的第二失敗。

+0

嘗試安裝'python-simplejson'模塊 – itzMEonTV

+0

@itzmeontv我已安裝該模塊。 python -c「導入simplejson」成功 –

+0

Ansible要求將python-simplejson安裝在EL盒子上<6. – itzMEonTV

回答

1

這可能會發生,因爲你有兩個版本的python:系統python在/usr/bin/python和另一個python在/usr/local/bin/python。如果第一個路徑的python> = 2.5或者在其站點包中包含simplejson,那麼第一個任務將執行正常。但是,如果您尚未安裝用於系統python的simplejson /usr/bin/python(最容易到sudo yum -y install python-simplejson),那麼git任務可能會失敗。

標準模塊總是使用#!/usr/bin/python shebang,而git module也不例外。

此外,從ansible documentation

默認Ansible假定它可以找到你的遠程系統上的/ usr/bin中/ Python的是Python中的2.X版本,特別是2.4或更高版本。

在任何主機上設置清單變量'ansible_python_interpreter'將允許Ansible自動替換執行python模塊時使用的解釋器。因此,如果系統上的/ usr/bin/python不指向Python 2.X解釋器,則可以指向系統上需要的任何python。

+0

賓果!這個問題解決了.. –