ansible failed in virtualenv

Hello, I am new to Ansible.

I have installed ansible in the virtualenv. But when I load a playbook, it failed in one “command” module:

TASK: [create the tahoe introducer] *******************************************

<127.0.0.1> REMOTE_MODULE command /home/ywu/.virtualenvs/sercle/bin/tahoe create-introducer -C /var/boomerang/2 chdir=/var/boomerang/2 creates=/var/boomerang/2/tahoe.cfg

<127.0.0.1> EXEC [‘/bin/sh’, ‘-c’, ‘mkdir -p $HOME/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652 && echo $HOME/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652’]

<127.0.0.1> PUT /tmp/tmpCFiHXC TO /home/ywu/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652/command

<127.0.0.1> EXEC [‘/bin/sh’, ‘-c’, ‘/home/ywu/.virtualenvs/sercle/bin/python /home/ywu/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652/command; rm -rf /home/ywu/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652/ >/dev/null 2>&1’]

failed: [127.0.0.1] => {“failed”: true, “parsed”: false}

invalid output was: Traceback (most recent call last):

File “/home/ywu/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652/command”, line 1282, in

main()

File “/home/ywu/.ansible/tmp/ansible-tmp-1394984637.79-197969704468652/command”, line 139, in main

rc, out, err = module.run_command(args, executable=executable, use_unsafe_shell=shell)

TypeError: run_command() got an unexpected keyword argument ‘use_unsafe_shell’

FATAL: all hosts have already failed – aborting

If I run the playbook without virtualenv, it is running fine.

Could someone enlighten me what went wrong?

Thanks,

Yapeng

I am having exactly the same error message, but in my case I am not using virtualenv.
Did you get this sorted?

Azul,

No, I stopped using ansible in virtualenv. Which platform are you using?

I am wondering if ansible supports in virtualenv.

Yapeng

I cannot tell you what went wrong, but I remember that once I had problems running ansible in virtualenv myself too. Since my only reason to run ansible in a virtualenv was to run some playbooks with a newer ansible version, but didn’t want to replace my then current version, I did not spend time looking at it further and used the hacking environment instead. This is actually the recommended way to test things in ansible. So if you have similar needs, have a look at the documentation on how to enable the hacking environment (pretty easy):

This doesn’t seem to be about virtualenv, but that you have a previous install of Ansible and you’re finding some old libraries.

When you do use virtualenv though, be sure to set ansible_python_interpreter on the control machine so it’s using the right python for dependencies for local action steps.