Use a common python build/install role for source-base deployment
Instead of copying a common set of code between all the roles, switch to using a common role which checks whether a deploy host already has the appropriate venv package. If it does not, build it on the fly and pull it to the deploy host. Implementing this does away with the requirement to do builds on the repo container. Once this has been implemented into all roles then the repo_build role will be retired. Depends-On: https://review.openstack.org/556840 Change-Id: I57e87406bee5c7d10aa824f18d3142f8f3ac6ab4
This commit is contained in:
parent
1ef4471ea5
commit
975675b659
@ -32,7 +32,9 @@
|
||||
until: _stop | success
|
||||
retries: 5
|
||||
delay: 2
|
||||
listen: "Restart glance services"
|
||||
listen:
|
||||
- "Restart glance services"
|
||||
- "venv changed"
|
||||
|
||||
# TODO(odyssey4me):
|
||||
# Assuming glance-registry is removed in the S cycle as planned, this
|
||||
@ -82,7 +84,9 @@
|
||||
- "/etc/systemd/system/{{ glance_services['glance-registry']['service_name'] }}.service"
|
||||
when:
|
||||
- not glance_services['glance-registry']['condition']
|
||||
listen: "Restart glance services"
|
||||
listen:
|
||||
- "Restart glance services"
|
||||
- "venv changed"
|
||||
|
||||
# Note (odyssey4me):
|
||||
# The policy.json file is currently read continually by the services
|
||||
@ -100,7 +104,9 @@
|
||||
group: "{{ glance_system_group_name }}"
|
||||
mode: "0640"
|
||||
remote_src: yes
|
||||
listen: "Restart glance services"
|
||||
listen:
|
||||
- "Restart glance services"
|
||||
- "venv changed"
|
||||
|
||||
- name: Start services
|
||||
service:
|
||||
@ -113,7 +119,9 @@
|
||||
until: _start | success
|
||||
retries: 5
|
||||
delay: 2
|
||||
listen: "Restart glance services"
|
||||
listen:
|
||||
- "Restart glance services"
|
||||
- "venv changed"
|
||||
|
||||
- meta: noop
|
||||
listen: Manage LB
|
||||
|
@ -103,113 +103,30 @@
|
||||
{% endfor %}
|
||||
when: glance_developer_mode | bool
|
||||
|
||||
- name: Install requires pip packages
|
||||
pip:
|
||||
name: "{{ glance_requires_pip_packages }}"
|
||||
state: "{{ glance_pip_package_state }}"
|
||||
extra_args: >-
|
||||
- name: Build/install the python venv
|
||||
include_role:
|
||||
name: "python_venv_build"
|
||||
private: yes
|
||||
vars:
|
||||
distro_package_list: "{{ glance_distro_packages }}"
|
||||
host_pip_packages: "{{ glance_requires_pip_packages }}"
|
||||
venv_pip_packages: "{{ glance_pip_packages }}"
|
||||
host_pip_install_args: >-
|
||||
{{ glance_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|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
|
||||
- name: Retrieve checksum for venv download
|
||||
uri:
|
||||
url: "{{ glance_venv_download_url | replace('tgz', 'checksum') }}"
|
||||
return_content: yes
|
||||
register: glance_venv_checksum
|
||||
when: glance_venv_download | bool
|
||||
|
||||
- name: Attempt venv download
|
||||
get_url:
|
||||
url: "{{ glance_venv_download_url }}"
|
||||
dest: "/var/cache/{{ glance_venv_download_url | basename }}"
|
||||
checksum: "sha1:{{ glance_venv_checksum.content | trim }}"
|
||||
register: glance_get_venv
|
||||
when: glance_venv_download | bool
|
||||
|
||||
- name: Remove existing venv
|
||||
file:
|
||||
path: "{{ glance_bin | dirname }}"
|
||||
state: absent
|
||||
when: glance_get_venv | changed
|
||||
|
||||
- name: Create glance venv dir
|
||||
file:
|
||||
path: "{{ glance_bin | dirname }}"
|
||||
state: directory
|
||||
register: glance_venv_dir
|
||||
when: glance_get_venv | changed
|
||||
|
||||
- name: Unarchive pre-built venv
|
||||
unarchive:
|
||||
src: "/var/cache/{{ glance_venv_download_url | basename }}"
|
||||
dest: "{{ glance_bin | dirname }}"
|
||||
copy: "no"
|
||||
when: glance_get_venv | changed
|
||||
notify:
|
||||
- Manage LB
|
||||
- Restart glance services
|
||||
|
||||
- name: Install pip packages
|
||||
pip:
|
||||
name: "{{ glance_pip_packages }}"
|
||||
state: "{{ glance_pip_package_state }}"
|
||||
virtualenv: "{{ glance_bin | dirname }}"
|
||||
virtualenv_site_packages: "no"
|
||||
extra_args: >-
|
||||
venv_pip_install_args: >-
|
||||
{{ glance_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|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when: glance_get_venv | failed or glance_get_venv | skipped
|
||||
notify:
|
||||
- Manage LB
|
||||
- Restart glance services
|
||||
|
||||
- name: Remove python from path first (CentOS, openSUSE)
|
||||
file:
|
||||
path: "{{ glance_bin | dirname }}/bin/python2.7"
|
||||
state: "absent"
|
||||
when:
|
||||
- ansible_pkg_mgr in ['yum', 'dnf', 'zypper']
|
||||
- glance_get_venv | changed
|
||||
|
||||
- name: Update virtualenv path
|
||||
shell: |
|
||||
find {{ glance_bin }} -name \*.pyc -delete
|
||||
sed -si '1s/^.*python.*$/#!{{ glance_bin | replace ('/','\/') }}\/python/' {{ glance_bin }}/*
|
||||
virtualenv {{ glance_bin | dirname }}
|
||||
when: glance_get_venv | changed
|
||||
tags:
|
||||
- skip_ansible_lint
|
||||
|
||||
- name: Record the need for a service restart
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: glance
|
||||
option: need_service_restart
|
||||
value: True
|
||||
when: (glance_get_venv | changed) or
|
||||
(glance_venv_dir | changed) or
|
||||
(install_packages | changed) or
|
||||
(ansible_local is not defined) or
|
||||
('openstack_ansible' not in ansible_local) or
|
||||
('glance' not in ansible_local['openstack_ansible']) or
|
||||
('need_service_restart' not in ansible_local['openstack_ansible']['glance'])
|
||||
|
||||
- name: Record the venv tag deployed
|
||||
ini_file:
|
||||
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
|
||||
section: glance
|
||||
option: venv_tag
|
||||
value: "{{ glance_venv_tag }}"
|
||||
venv_destination_path: "{{ glance_bin | dirname }}"
|
||||
venv_facts_when_changed:
|
||||
- section: "glance"
|
||||
option: "need_service_restart"
|
||||
value: True
|
||||
- section: "glance"
|
||||
option: "venv_tag"
|
||||
value: "{{ glance_venv_tag }}"
|
||||
|
||||
- name: Create TEMP run dir
|
||||
file:
|
||||
|
@ -58,3 +58,7 @@
|
||||
src: https://git.openstack.org/openstack/ansible-role-systemd_service
|
||||
scm: git
|
||||
version: master
|
||||
- name: python_venv_build
|
||||
src: https://git.openstack.org/openstack/ansible-role-python_venv_build
|
||||
scm: git
|
||||
version: master
|
||||
|
Loading…
x
Reference in New Issue
Block a user