Запуск Ansible Playbooks под uWSGI не работает

У меня есть Ansible Playbooks, запускаемые из командной строки, так как кажется, что Ansible использует исполняющее приложение (в данном случае Python) в качестве команды для вызова Playbooks.

Проблема в том, что когда вы пытаетесь запустить Ansible Playbooks под uWSGI, команда, которая пытается запустить Playbook, использует / usr / bin / uwsgi.

Каким-то образом Ansible находит команду, под которой работает. Есть ли способ это изменить?

ОБНОВЛЕНИЕ: я считаю, что запускаемая команда - это просто sys.executable. Это можно изменить?


person LiteWait    schedule 04.03.2015    source источник


Ответы (1)


Не совсем понял общую картину, но помогает ли это, если вы можете указать интерпретатор для каждого удаленного хоста, используя "поведенческий-инвентарный-параметр":

ansible_python_interpreter Путь Python к целевому хосту. Это полезно для систем с более чем одним Python или расположенных не в «/ usr / bin / python», таких как * BSD, или где / usr / bin / python не является Python серии 2.X. Мы не используем механизм «/ usr / bin / env», поскольку он требует правильной установки пути удаленного пользователя, а также предполагает, что исполняемый файл «python» называется python, где исполняемый файл может называться примерно как «python26».

например вот как будет выглядеть ваш файл инвентаря, если вы укажете их на уровне группы (вы также можете указать на уровне хоста, конечно, по вашему выбору):

# I think specifying ansible_ssh_host won't be needed, but if needed here is how it can be done.
# localhost ansible_ssh_host=127.0.0.1 ansible_python_interpreter=/usr/local/bin/python
localhost ansible_python_interpreter=/usr/local/bin/python
[rhel5-boxes]
rhelhost1
# ...

# other groups...

[rhel5-boxes:vars]
ansible_python_interpreter=/usr/bin/python2.6

[rhel6-boxes]
ansible_python_interpreter=/usr/bin/python

[iron-boxes:vars]
ansible_python_interpreter=/usr/bin/ipython
person Kashyap    schedule 04.03.2015
comment
Что ж, в этом есть смысл, но работает ли это для localhost / 127.0.0.1? Кажется, это жестко запрограммировано на sys.executable - person LiteWait; 04.03.2015
comment
Может это сработает? [локальный хост] 127.0.0.1 ansible_python_interpreter = / usr / local / bin / python - person LiteWait; 04.03.2015
comment
@LiteWait [localhost] определит группу, а не хост. Я добавил строку о том, как это сделать для localhost. Все еще не совсем ясно, в чем заключается проблема, например, HTH. :-) - person Kashyap; 05.03.2015