2015-04-28 3 views
0

У меня есть игра Ansible playbook, работающая против машины с выпуском CentOS 5.6 (Final). У меня есть простойjson, установленный на целевой машине, и модуль импортируется из интерпретатора 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 "import simplejson" успешно завершает –

+0

Ansible требует установки python-simplejson на ящиках EL <6. – itzMEonTV

ответ

1

Это может произойти, потому что у вас есть две версии python: системный питон на /usr/bin/python и еще один питон, возможно, /usr/local/bin/python. Если питон с первым-на-пути -> = 2.5 или иначе имеет simplejson в своих сайтах-пакетах, первая задача будет выполнена нормально. Однако, если вы не установили simplejson для системы python на /usr/bin/python (проще всего sudo yum -y install python-simplejson), то задача git может завершиться неудачей.

Стандартные одноразовые модули всегда используют шейнг #!/usr/bin/python, а git module не является исключением.

Кроме того, из ansible documentation:

По умолчанию анзибль предполагает, что он может найти/USR/BIN/питон на вашей удаленной системе, которая является версией 2.х Python, в частности, 2,4 или выше.

Настройка переменной инвентаризации 'ansible_python_interpreter' на любом хосте позволит Ansible автоматически заменить интерпретатор, используемый при выполнении модулей python. Таким образом, вы можете указать любой python, который вы хотите в системе, если/usr/bin/python в вашей системе не указывает на интерпретатор Python 2.X.

+0

bingo !! это исправило проблему .. –

Смежные вопросы