I’m trying to use the os_server module in Ansible 2.0 and get the following error:
fatal: [jump]: FAILED! => {“changed”: false, “failed”: true, “msg”: “shade is required for this module”}
Here’s what I have:
Python 2.7.10 (Mac, installed via Homebrew)
Using a virtual environment.
shade installed in venv via pip (pulled all of it’s dependencies, at least as far as I can tell)
Ansible cloned from git, devel branch at commit 8798ce1973a5fd0f8d84e001281699337ddabda4
Installed ansible 2.0 by “python setup.py install” from the venv python interpreter. It installed in site-packages as expected.
With python in the venv, I can import shade without a problem and create some shade objects.
I’m just starting to test with 2.0, so I have a very simply playbook calling just a single role with a single task. My Openstack.rc file is sourced and present in my environment. Other openstack cli tools (nova, neutron, etc.) work fine, so I don’t include an auth dictionary in the task.
The problem is your environment. I use Python from Homebrew, but I don’t
use a virtualenv b/c it’s hard to make ansible play nicely with that.
When ansible connects to the host, ‘jump’ for you, it’s going to automatically
use the system python. You can set a different interpreter by adding this to
your ansible hosts file for the ‘jump’ host:
jump ansible_python_interpreter=/path/to/python
The path should point to the interpreter that has shade installed.
Alternatively, install shade in the system python.
If you’ve installed shade into a virtualenv on your ansible control machine, you may need to tell ansible to use that virtualenv in order to detect it. I’ve done it like so in my hosts file for other modules (like boto):
I have exactly the same problem with ansible 2.2 and python 2.7. All packages are installed in system, no venv but ansible continue with
fatal: [localhost]: FAILED! => {“changed”: false, “failed”: true, “msg”: “shade is required for this module”}
I know this post is already solved since 2015, but if someone could help me …
Same issue here, but I did some experimenting to see what the problem is. I found that running the following command:
python -c “import shade”
provided a lot of useful information about why it wasn’t loading the shade library.
In my case, the file permissions were wrong on some of the package directories that pip had created in site-packages, and one undeclared transitive dependency (importlib) was missing.
Try installing ansible using pip because I don’t know why the python environment of the ansible package provided by my distro (ArchLinux) isn’t the same as the shade module (installed using pip).