Implement shippable venvs

The change builds venvs in a single repo container and then
ships them to to all targets. The built venvs will be within
the repo servers and will allow for faster deployments,
upgrades, and more consistent deployments for the life cycle
of the deployment.

This will create a versioned tarball that will allow for
greater visablility into the build process as well as giving
deployers/developers the ability to compair a release in
place.

Change-Id: Ieef0b89ebc009d1453c99e19e53a36eb2d70edae
Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
This commit is contained in:
Kevin Carter 2015-10-16 22:22:14 -05:00
parent 505d457833
commit ec9a271e47
4 changed files with 64 additions and 3 deletions

View File

@ -32,6 +32,8 @@ nova_venv_enabled: true
# system path used when the installing.
nova_bin: "{{ nova_venv_bin }}"
nova_venv_download_url: http://127.0.0.1/venvs/untagged/ubuntu/nova.tgz
nova_fatal_deprecations: False
## System info
@ -289,6 +291,7 @@ nova_compute_kvm_apt_packages:
# nova packages that must be installed before anything else
nova_requires_pip_packages:
- virtualenv
- virtualenv-tools
- python-keystoneclient # Keystoneclient needed to OSA keystone lib
nova_compute_pip_packages:

View File

@ -51,7 +51,9 @@
delay: 2
with_items:
- "{{ nova_compute_pip_packages }}"
when: nova_venv_enabled | bool
when:
- nova_venv_enabled | bool
- nova_get_venv | failed
tags:
- nova-install
- nova-pip-packages

View File

@ -68,7 +68,9 @@
delay: 2
with_items:
- "{{ nova_novnc_pip_packages }}"
when: nova_venv_enabled | bool
when:
- nova_venv_enabled | bool
- nova_get_venv | failed
tags:
- nova-install
- nova-pip-packages

View File

@ -52,6 +52,58 @@
- nova-install
- nova-pip-packages
- name: Attempt venv download
get_url:
url: "{{ nova_venv_download_url }}"
dest: "/var/cache/{{ nova_venv_download_url | basename }}"
ignore_errors: true
register: get_venv
when: nova_venv_enabled | bool
tags:
- nova-install
- nova-pip-packages
- name: Set nova get_venv fact
set_fact:
nova_get_venv: "{{ get_venv }}"
when: nova_venv_enabled | bool
tags:
- nova-install
- nova-pip-packages
- name: Create nova venv dir
file:
path: "{{ nova_venv_bin | dirname }}"
state: directory
when:
- nova_venv_enabled | bool
- nova_get_venv | success
tags:
- nova-install
- nova-pip-packages
- name: Unarchive pre-built venv
unarchive:
src: "/var/cache/{{ nova_venv_download_url | basename }}"
dest: "{{ nova_venv_bin | dirname }}"
copy: "no"
when:
- nova_venv_enabled | bool
- nova_get_venv | success
tags:
- nova-install
- nova-pip-packages
- name: Update virtualenv path
command: >
virtualenv-tools --update-path=auto {{ nova_venv_bin | dirname }}
when:
- nova_venv_enabled | bool
- nova_get_venv | success
tags:
- nova-install
- nova-pip-packages
- name: Install pip packages (venv)
pip:
name: "{{ item }}"
@ -65,7 +117,9 @@
delay: 2
with_items:
- "{{ nova_pip_packages }}"
when: nova_venv_enabled | bool
when:
- nova_venv_enabled | bool
- nova_get_venv | failed
tags:
- nova-install
- nova-pip-packages