Shade not available via yum?

851 views
Skip to first unread message

Richard Eggert

unread,
Sep 23, 2016, 11:29:55 AM9/23/16
to Ansible Project
I installed Ansible using yum on CentOS 6.8 via a corporate mirror of EPEL. However, when I attempted to use the os_server module to interact with the OpenStack API, it failed saying that "shade" is required. When I went to install Shade via Yum, I discovered to my horror and dismay that Shade (python-shade) is not available from EPEL, making it impossible to install via Yum. I attempted to install it via pip but quickly fell into the ninth circle of Python Dependency Hell.

How could Ansible be available via EPEL while not also making available one of the libraries that a module it ships with depends upon? Was this an oversight?

David Shrewsbury

unread,
Sep 23, 2016, 1:12:52 PM9/23/16
to Ansible Project
Ansible isn't responsible for packaging and shipping of the libraries that the
modules may use. Shade isn't packaged on Centos or EPEL simply because
no one from the community has stepped up to make those packages available.
It is available on Ubuntu and Fedora distributions, but that doesn't help you
unfortunately.

Installing it via pip was the right thing for you to do in your circumstance, but
I'm curious as the "Python Dependency Hell" you mentioned. Could you elaborate
on that a bit (if nothing else just to satisfy my curiosity)?

-Dave

Richard Eggert

unread,
Sep 23, 2016, 1:49:58 PM9/23/16
to Ansible Project
The first thing I ran into was a conflict with the installed version of pbr.

To get around this, I set up a virtualenv, and tried installing into that.

I then went down a rabbit hole of dealing with a few dozen transitive dependencies, at least a few of which required me to install gcc in order to install them.

In a few cases, I found that the latest installed version of a transitive dependency depended on a newer version of another library than what was available from the corporate Pypi mirror. I got around these issues by manually specifying older versions of the libraries that had such dependencies.

I managed to get pretty far like this, until pip tried to install cffi, which resulted in a compilation error from gcc:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 75: ordinal not in range(128)

I then tried setting the environment variable LC_ALL=C as I had seen suggested in various places. This resulted in another error:

'FFI_DEFAULT_ABI' undeclared

Another Google search later, and I yum installed libffi-devel and tried again. cffi installed successfully.

I then attempted to install shade again. This resulted in dozens of compilation errors from _openssl.c while attempting to transitively install the cryptography library.


I had no idea what to do at this point and gave up.


~Rich

David Shrewsbury

unread,
Sep 23, 2016, 1:56:12 PM9/23/16
to ansible...@googlegroups.com
Oh yuck.

Yeah, mixing distribution packages with pip packages can get really ugly, especially
as the operating system distribution gets older and package versions get further apart.

-Dave



--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/4YgEuScim5E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/9f033d68-2f94-409a-ab70-fff20dae0a25%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
David Shrewsbury (Shrews)

John Favorite

unread,
Sep 23, 2016, 2:06:53 PM9/23/16
to ansible...@googlegroups.com
I just go pip route when it comes to ansible. Here is my vagrant  repo to get you up and running for anyone interested (if nothing else but to cheat off) 


To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.



--
David Shrewsbury (Shrews)

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAB91eg4YvxqX0EcDn6iL3N3jkJHt7nCBaPWjdFL8AyhbU9P56w%40mail.gmail.com.

Richard Eggert

unread,
Sep 23, 2016, 2:10:38 PM9/23/16
to Ansible Project
I also tried forgoing the virtualenv insanity and just upgrading (via pip) the pbr library in site-packages (which was installed via yum). I was able to upgrade it (to 1.10.0), but when I went to install shade, pip didn't seem to recognize that pbr had been upgraded (it still gave me the same "pbr>=1.8" dependency failure). I even tried installing pbr 1.8.0 specifically, to no avail.


~ Rich

To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.



--
David Shrewsbury (Shrews)

Richard Eggert

unread,
Sep 23, 2016, 2:21:46 PM9/23/16
to Ansible Project
Installing everything via pip didn't work either. I still wound up with the same error when attempting to install cryptography.

I guess I'll be stuck using shell commands to interact with OpenStack. :-/

John Favorite

unread,
Sep 23, 2016, 2:31:28 PM9/23/16
to Ansible Project
Richard,

Could you dump your ~/.bash_history ? I have had to work around this issue too. Perhaps we can find a working solution with help from this mailing list.

Richard Eggert

unread,
Sep 23, 2016, 3:38:42 PM9/23/16
to Ansible Project
Unfortunately, that's not an option. I'm working on a private network, and that sort of thing would not meet the approval of the Network Nazis.

I can try reproducing the problem at home, though I might not be able to, since it's a different OS (Ubuntu instead of CentOS) with a different network environment (direct Internet access instead of a corporate enclave).

~Rich.

Matt Martz

unread,
Sep 23, 2016, 3:41:06 PM9/23/16
to ansible...@googlegroups.com
Here is what is required:

yum install -y epel-release
yum install -y python-pip python-devel libffi-devel openssl-devel gcc
pip install -U pip
pip install shade

You could skip epel-release and python-pip by doing:

yum install -y python-devel libffi-devel openssl-devel gcc
pip install shade

To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAKsMCEQG9r8cJTz7tXYc6vayKF75wjVEUA-wE%3D6onHcBzhNmYw%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

John Favorite

unread,
Sep 23, 2016, 4:22:18 PM9/23/16
to ansible...@googlegroups.com

Ah yes, closed networks. Fun times. You can test on vagrant box to get centos.


To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.

Richard Eggert

unread,
Sep 26, 2016, 10:34:14 AM9/26/16
to Ansible Project
This worked, though I had to make the following tweak:

pip install -U "pip<8.1.2"  

Otherwise, transitive installation of oslo.i18n fails due to conversion of the dot to a dash when it queries the pypi mirror.

Thanks a lot!

~Rich
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

Richard Eggert

unread,
Sep 26, 2016, 1:19:33 PM9/26/16
to Ansible Project
I also needed to yum install python-importlib, as well as fix the file permissions on the files added by pip to site-packages.

However, now I'm running into a version conflict with the stevedore package. python-keystoneclient wants stevedore >= 1.16.0, but stevedore 1.10+ doesn't support Python 2.6.


~Rich


On Friday, September 23, 2016 at 11:29:55 AM UTC-4, Richard Eggert wrote:

Richard Eggert

unread,
Sep 26, 2016, 2:14:58 PM9/26/16
to Ansible Project
Doh! I just realized that there is NO version of Shade that officially supports Python 2.6. :-(

Richard Eggert

unread,
Sep 26, 2016, 2:36:05 PM9/26/16
to Ansible Project
I finally got os_server_facts working. I even created an Ansible role to configure the control server to get it to work. :-)

I ended up creating a pip requirements file to get the right set of dependencies for Shade:

shade
stevedore<1.10
python-keystoneclient<2.0
wrapt
oslo.serialization<2.0
oslo.i18n<3.0
oslo.config<3.0
python-swiftclient<3.0
python-designateclient<2.0



On Friday, September 23, 2016 at 11:29:55 AM UTC-4, Richard Eggert wrote:
Reply all
Reply to author
Forward
0 new messages