From a0ab6f7a6efea1dabf5ac006f766c17596a0d10b Mon Sep 17 00:00:00 2001 From: Matt Thompson Date: Wed, 4 Nov 2015 12:03:35 +0000 Subject: [PATCH] Symlink ceph libraries out of venv Currently, we install python-rados and python-rbd via apt when ceph integration is enabled, which causes issues when venvs are used in the environment. This commit adds a temporary work-around by creating symlinks in the venv to the installed libraries outside. There is currently a ceph issue [1] in progress to make this possible, and once this has been completed we can update ceph_client role to install python packages instead. [1] http://tracker.ceph.com/issues/5900 Change-Id: Ia7a3ceae002054fd75e0305892b20ce1143f8dcc Closes-Bug: #1509837 --- .../roles/os_cinder/tasks/cinder_install.yml | 22 +++++++++++++++++++ .../roles/os_glance/tasks/glance_install.yml | 22 +++++++++++++++++++ .../tasks/nova_compute_kvm_install.yml | 22 +++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/playbooks/roles/os_cinder/tasks/cinder_install.yml b/playbooks/roles/os_cinder/tasks/cinder_install.yml index fb6c49ddd6..43fa1418a2 100644 --- a/playbooks/roles/os_cinder/tasks/cinder_install.yml +++ b/playbooks/roles/os_cinder/tasks/cinder_install.yml @@ -124,6 +124,28 @@ - cinder-install - cinder-pip-packages +# TODO(mattt): remove once ceph_client role can install ceph packages from pypi +# This is being done as a temporary workaround since we currently cannot obtain +# ceph-related libraries from pypi. There is work in progress [1] to address +# this. +# [1] http://tracker.ceph.com/issues/5900 +- name: Link ceph libraries into the venv + file: + src: "{{ item.name }}" + dest: "{{ cinder_venv_bin | dirname }}/lib/python2.7/site-packages/{{ item.name | basename }}" + state: "{{ item.state }}" + force: "yes" + with_items: + - { state: link, name: "/usr/lib/python2.7/dist-packages/rados.py" } + - { state: link, name: "/usr/lib/python2.7/dist-packages/rbd.py" } + when: + - cinder_venv_enabled | bool + - inventory_hostname in groups['cinder_volume'] + - cinder_backend_rbd_inuse|bool + tags: + - cinder-install + - cinder-pip-packages + - name: Install pip packages (no venv) pip: name: "{{ item }}" diff --git a/playbooks/roles/os_glance/tasks/glance_install.yml b/playbooks/roles/os_glance/tasks/glance_install.yml index 0df0eaa1f0..408592da35 100644 --- a/playbooks/roles/os_glance/tasks/glance_install.yml +++ b/playbooks/roles/os_glance/tasks/glance_install.yml @@ -124,6 +124,28 @@ - glance-install - glance-pip-packages +# TODO(mattt): remove once ceph_client role can install ceph packages from pypi +# This is being done as a temporary workaround since we currently cannot obtain +# ceph-related libraries from pypi. There is work in progress [1] to address +# this. +# [1] http://tracker.ceph.com/issues/5900 +- name: Link ceph libraries into the venv + file: + src: "{{ item.name }}" + dest: "{{ glance_venv_bin | dirname }}/lib/python2.7/site-packages/{{ item.name | basename }}" + state: "{{ item.state }}" + force: "yes" + with_items: + - { state: link, name: "/usr/lib/python2.7/dist-packages/rados.py" } + - { state: link, name: "/usr/lib/python2.7/dist-packages/rbd.py" } + when: + - glance_venv_enabled | bool + - inventory_hostname in groups['glance_api'] + - glance_default_store == 'rbd' + tags: + - glance-install + - glance-pip-packages + - name: Install pip packages (no venv) pip: name: "{{ item }}" diff --git a/playbooks/roles/os_nova/tasks/nova_compute_kvm_install.yml b/playbooks/roles/os_nova/tasks/nova_compute_kvm_install.yml index ba2564ac89..67c74fbc6f 100644 --- a/playbooks/roles/os_nova/tasks/nova_compute_kvm_install.yml +++ b/playbooks/roles/os_nova/tasks/nova_compute_kvm_install.yml @@ -77,6 +77,28 @@ - nova-install - nova-pip-packages +# TODO(mattt): remove once ceph_client role can install ceph packages from pypi +# This is being done as a temporary workaround since we currently cannot obtain +# ceph-related libraries from pypi. There is work in progress [1] to address +# this. +# [1] http://tracker.ceph.com/issues/5900 +- name: Link ceph libraries into the venv + file: + src: "{{ item.name }}" + dest: "{{ nova_venv_bin | dirname }}/lib/python2.7/site-packages/{{ item.name | basename }}" + state: "{{ item.state }}" + force: "yes" + with_items: + - { state: link, name: "/usr/lib/python2.7/dist-packages/rados.py" } + - { state: link, name: "/usr/lib/python2.7/dist-packages/rbd.py" } + when: + - nova_venv_enabled | bool + - inventory_hostname in groups['nova_compute'] + - (cinder_backends_rbd_inuse|bool or nova_libvirt_images_rbd_pool is defined) + tags: + - nova-install + - nova-pip-packages + - name: Install pip packages (no venv) pip: name: "{{ item }}"