f2a3f86c9c
Distro installations do not deploy virtual environments but they still need a local venv_tag deployed. The reason for this is because this fact is used by the integration repo to determine if the keystone software is the same across all nodes in the keystone_all group so we can safely run the DB migration. Change-Id: I9bab11b3c643f2411d78267aa6114081fe76b9ef
113 lines
3.7 KiB
YAML
113 lines
3.7 KiB
YAML
---
|
|
# Copyright 2014, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
- name: Create developer mode constraint file
|
|
copy:
|
|
dest: "/opt/developer-pip-constraints.txt"
|
|
content: |
|
|
{% for item in keystone_developer_constraints %}
|
|
{{ item }}
|
|
{% endfor %}
|
|
when: keystone_developer_mode | bool
|
|
|
|
- name: Retrieve checksum for venv download
|
|
uri:
|
|
url: "{{ keystone_venv_download_url | replace('tgz', 'checksum') }}"
|
|
return_content: yes
|
|
register: keystone_venv_checksum
|
|
when: keystone_venv_download | bool
|
|
|
|
- name: Attempt venv download
|
|
get_url:
|
|
url: "{{ keystone_venv_download_url }}"
|
|
dest: "/var/cache/{{ keystone_venv_download_url | basename }}"
|
|
checksum: "sha1:{{ keystone_venv_checksum.content | trim }}"
|
|
register: keystone_get_venv
|
|
when: keystone_venv_download | bool
|
|
|
|
- name: Remove existing venv
|
|
file:
|
|
path: "{{ keystone_bin | dirname }}"
|
|
state: absent
|
|
when: keystone_get_venv is changed
|
|
|
|
- name: Create keystone venv dir
|
|
file:
|
|
path: "{{ keystone_bin | dirname }}"
|
|
state: directory
|
|
register: keystone_venv_dir
|
|
when: keystone_get_venv is changed
|
|
|
|
- name: Unarchive pre-built venv
|
|
unarchive:
|
|
src: "/var/cache/{{ keystone_venv_download_url | basename }}"
|
|
dest: "{{ keystone_bin | dirname }}"
|
|
copy: "no"
|
|
when: keystone_get_venv is changed
|
|
notify:
|
|
- Manage LB
|
|
- Restart uWSGI
|
|
- Restart web server
|
|
|
|
- name: Install pip packages
|
|
pip:
|
|
name: "{{ keystone_pip_packages }}"
|
|
state: "{{ keystone_pip_package_state }}"
|
|
virtualenv: "{{ keystone_bin | dirname }}"
|
|
virtualenv_site_packages: "no"
|
|
extra_args: >-
|
|
{{ keystone_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }}
|
|
{{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }}
|
|
{{ pip_install_options | default('') }}
|
|
register: install_packages
|
|
until: install_packages is success
|
|
retries: 5
|
|
delay: 2
|
|
when: keystone_get_venv | failed or keystone_get_venv | skipped
|
|
notify:
|
|
- Manage LB
|
|
- Restart uWSGI
|
|
- Restart web server
|
|
|
|
- name: Remove python from path first (CentOS, openSUSE)
|
|
file:
|
|
path: "{{ keystone_bin | dirname }}/bin/python2.7"
|
|
state: "absent"
|
|
when:
|
|
- ansible_pkg_mgr in ['yum', 'dnf', 'zypper']
|
|
- keystone_get_venv is changed
|
|
|
|
# NOTE(odyssey4me):
|
|
# # We reinitialize the venv to ensure that the right
|
|
# # version of python is in the venv, but we do not
|
|
# # want virtualenv to also replace pip, setuptools
|
|
# # and wheel so we tell it not to.
|
|
# # We do not use --always-copy for CentOS/SuSE due
|
|
# # to https://github.com/pypa/virtualenv/issues/565
|
|
- name: Reset virtualenv and update its paths
|
|
shell: |
|
|
set -o errexit
|
|
find {{ keystone_bin }} -name \*.pyc -delete
|
|
if test -d {{ keystone_bin }}/__pycache__; then rmdir {{ keystone_bin }}/__pycache__; fi
|
|
sed -si '1s/^.*python.*$/#!{{ keystone_bin | replace ('/','\/') }}\/python/' {{ keystone_bin }}/*
|
|
virtualenv {{ keystone_bin | dirname }} \
|
|
{{ (ansible_pkg_mgr == 'apt') | ternary('--always-copy', '') }} \
|
|
--no-pip \
|
|
--no-setuptools \
|
|
--no-wheel
|
|
when: keystone_get_venv is changed
|
|
tags:
|
|
- skip_ansible_lint
|