diff --git a/tasks/horizon_install.yml b/tasks/horizon_install.yml index 54c13e3d..faf78834 100644 --- a/tasks/horizon_install.yml +++ b/tasks/horizon_install.yml @@ -65,6 +65,121 @@ - horizon-install - 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) pip: name: "{{ item }}" @@ -100,3 +215,33 @@ notify: Restart apache2 tags: - 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 diff --git a/tasks/horizon_pre_install.yml b/tasks/horizon_pre_install.yml index 34a8a5ff..efb06794 100644 --- a/tasks/horizon_pre_install.yml +++ b/tasks/horizon_pre_install.yml @@ -58,167 +58,6 @@ tags: - 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 shell: | if [ -h "/var/log/horizon" ]; then