Standardise installation-related task files

Most IRR roles have identical pre_install and install YAML task files.
This makes it easy to change them across the board.  Horizon, however,
has a number of tasks in the pre_install YAML file where on the other
roles these tasks lie in the install YAML.

This commit moves the following from horizon_pre_install to
horizon_install.yml:

Install requires pip packages
Get local venv checksum
Get remote venv checksum
Attempt venv download
Set horizon get_venv fact
Remove existing venv
Create horizon venv dir
Unarchive pre-built venv
Update virtualenv path
Create horizon venv
Create horizon links for venv
Create static horizon dir

Additionally, we delete the 'Create horizon venv' task as there should
be no reason to install horizon_requires_pip_packages into the venv
itself.  This also requires moving 'Create horizon links for venv' and
'Create static horizon dir' to the end of horizon_install.yml since the
venv does not exist at this point as the 'Install pip packages (venv)'
still needs to run.

With this change in place, it becomes easier to make changes across all
roles as they should now all follow a similar pattern.

Change-Id: Ie22b2ccdfb5e1f58b09c6740d16c9b538521143c
This commit is contained in:
Matt Thompson 2016-03-17 15:15:49 +00:00
parent 9f41da7883
commit bfabfab93f
2 changed files with 145 additions and 161 deletions

View File

@ -65,6 +65,121 @@
- horizon-install - horizon-install
- horizon-apt-packages - horizon-apt-packages
- name: Install requires pip packages
pip:
name: "{{ item }}"
state: present
extra_args: "{{ pip_install_options|default('') }}"
register: install_packages
until: install_packages|success
retries: 5
delay: 2
with_items:
- "{{ horizon_requires_pip_packages }}"
tags:
- horizon-pip-packages
- name: Get local venv checksum
stat:
path: "/var/cache/{{ horizon_venv_download_url | basename }}"
get_md5: False
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
register: local_venv_stat
tags:
- horizon-install
- horizon-pip-packages
- name: Get remote venv checksum
uri:
url: "{{ horizon_venv_download_url | replace('tgz', 'checksum') }}"
return_content: True
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
register: remote_venv_checksum
tags:
- horizon-install
- horizon-pip-packages
# TODO: When project moves to ansible 2 we can pass this a sha256sum which will:
# a) allow us to remove force: yes
# b) allow the module to calculate the checksum of dest file which would
# result in file being downloaded only if provided and dest sha256sum
# checksums differ
- name: Attempt venv download
get_url:
url: "{{ horizon_venv_download_url }}"
dest: "/var/cache/{{ horizon_venv_download_url | basename }}"
force: yes
ignore_errors: true
register: get_venv
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- (local_venv_stat.stat.exists == False or
{{ local_venv_stat.stat.checksum is defined and local_venv_stat.stat.checksum != remote_venv_checksum.content | trim }})
tags:
- horizon-install
- horizon-pip-packages
- name: Set horizon get_venv fact
set_fact:
horizon_get_venv: "{{ get_venv }}"
when: horizon_venv_enabled | bool
tags:
- horizon-install
- horizon-pip-packages
- name: Remove existing venv
file:
path: "{{ horizon_venv_bin | dirname }}"
state: absent
when:
- horizon_venv_enabled | bool
- horizon_get_venv | changed
tags:
- horizon-install
- horizon-pip-packages
- name: Create horizon venv dir
file:
path: "{{ horizon_venv_bin | dirname }}"
state: directory
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | changed
tags:
- horizon-install
- horizon-pip-packages
- name: Unarchive pre-built venv
unarchive:
src: "/var/cache/{{ horizon_venv_download_url | basename }}"
dest: "{{ horizon_venv_bin | dirname }}"
copy: "no"
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | changed
notify: Restart apache2
tags:
- horizon-install
- horizon-pip-packages
- name: Update virtualenv path
command: >
virtualenv-tools --update-path=auto {{ horizon_venv_bin | dirname }}
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | success
tags:
- horizon-install
- horizon-pip-packages
- name: Install pip packages (venv) - name: Install pip packages (venv)
pip: pip:
name: "{{ item }}" name: "{{ item }}"
@ -100,3 +215,33 @@
notify: Restart apache2 notify: Restart apache2
tags: tags:
- horizon-pip-packages - horizon-pip-packages
- name: Create horizon links for venv
file:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ horizon_system_user_name }}"
group: "{{ horizon_system_group_name }}"
state: "link"
with_items:
- src: "{{ horizon_lib_dir | dirname }}/site-packages"
dest: "{{ horizon_lib_dir }}"
when:
- horizon_venv_enabled | bool
tags:
- horizon-install
- horizon-configs
- name: Create static horizon dir
file:
path: "{{ item.path }}"
state: "directory"
owner: "{{ item.owner|default(horizon_system_user_name) }}"
group: "{{ item.group|default(horizon_system_group_name) }}"
with_items:
- { path: "{{ horizon_lib_dir }}/static", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard/local", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard/local/enabled", mode: "2755" }
tags:
- horizon-dirs

View File

@ -58,167 +58,6 @@
tags: tags:
- horizon-dirs - horizon-dirs
- name: Install requires pip packages
pip:
name: "{{ item }}"
state: present
extra_args: "{{ pip_install_options|default('') }}"
register: install_packages
until: install_packages|success
retries: 5
delay: 2
with_items:
- "{{ horizon_requires_pip_packages }}"
tags:
- horizon-pip-packages
- name: Get local venv checksum
stat:
path: "/var/cache/{{ horizon_venv_download_url | basename }}"
get_md5: False
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
register: local_venv_stat
tags:
- horizon-install
- horizon-pip-packages
- name: Get remote venv checksum
uri:
url: "{{ horizon_venv_download_url | replace('tgz', 'checksum') }}"
return_content: True
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
register: remote_venv_checksum
tags:
- horizon-install
- horizon-pip-packages
# TODO: When project moves to ansible 2 we can pass this a sha256sum which will:
# a) allow us to remove force: yes
# b) allow the module to calculate the checksum of dest file which would
# result in file being downloaded only if provided and dest sha256sum
# checksums differ
- name: Attempt venv download
get_url:
url: "{{ horizon_venv_download_url }}"
dest: "/var/cache/{{ horizon_venv_download_url | basename }}"
force: yes
ignore_errors: true
register: get_venv
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- (local_venv_stat.stat.exists == False or
{{ local_venv_stat.stat.checksum is defined and local_venv_stat.stat.checksum != remote_venv_checksum.content | trim }})
tags:
- horizon-install
- horizon-pip-packages
- name: Set horizon get_venv fact
set_fact:
horizon_get_venv: "{{ get_venv }}"
when: horizon_venv_enabled | bool
tags:
- horizon-install
- horizon-pip-packages
- name: Remove existing venv
file:
path: "{{ horizon_venv_bin | dirname }}"
state: absent
when:
- horizon_venv_enabled | bool
- horizon_get_venv | changed
tags:
- horizon-install
- horizon-pip-packages
- name: Create horizon venv dir
file:
path: "{{ horizon_venv_bin | dirname }}"
state: directory
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | changed
tags:
- horizon-install
- horizon-pip-packages
- name: Unarchive pre-built venv
unarchive:
src: "/var/cache/{{ horizon_venv_download_url | basename }}"
dest: "{{ horizon_venv_bin | dirname }}"
copy: "no"
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | changed
notify: Restart apache2
tags:
- horizon-install
- horizon-pip-packages
- name: Update virtualenv path
command: >
virtualenv-tools --update-path=auto {{ horizon_venv_bin | dirname }}
when:
- not horizon_developer_mode | bool
- horizon_venv_enabled | bool
- horizon_get_venv | success
tags:
- horizon-install
- horizon-pip-packages
- name: Create horizon venv
pip:
name: "{{ item }}"
state: present
virtualenv: "{{ horizon_venv_bin | dirname }}"
virtualenv_site_packages: "no"
extra_args: "{{ pip_install_options|default('') }}"
with_items:
- "{{ horizon_requires_pip_packages }}"
when:
- horizon_venv_enabled | bool
- horizon_get_venv | failed or horizon_developer_mode | bool
tags:
- horizon-install
- horizon-pip-packages
- name: Create horizon links for venv
file:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ horizon_system_user_name }}"
group: "{{ horizon_system_group_name }}"
state: "link"
with_items:
- src: "{{ horizon_lib_dir | dirname }}/site-packages"
dest: "{{ horizon_lib_dir }}"
when:
- horizon_venv_enabled | bool
tags:
- horizon-install
- horizon-configs
- name: Create static horizon dir
file:
path: "{{ item.path }}"
state: "directory"
owner: "{{ item.owner|default(horizon_system_user_name) }}"
group: "{{ item.group|default(horizon_system_group_name) }}"
with_items:
- { path: "{{ horizon_lib_dir }}/static", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard/local", mode: "2755" }
- { path: "{{ horizon_lib_dir }}/openstack_dashboard/local/enabled", mode: "2755" }
tags:
- horizon-dirs
- name: Test for log directory or link - name: Test for log directory or link
shell: | shell: |
if [ -h "/var/log/horizon" ]; then if [ -h "/var/log/horizon" ]; then