Use updated get_url module checksum functionality

Starting in Ansible 2.0, the get_url [1] module provides the
ability for a checksum to be provided to the get_url module
which will be verified against the local destination file
and the task skipped if it matches.

[1] http://docs.ansible.com/ansible/get_url_module.html

This patch implements the use of this functionality.

The ability to ignore a venv download failure is also removed
as this is not necessary or desirable. It is better for the
download to fail and the playbook execution to stop immediately
so that the failure point is exposed.

Change-Id: Ibe9d3a98e663cb1c1d7ae07aa10c9cee8e6aba3f
This commit is contained in:
Jesse Pretorius 2016-11-07 13:02:29 +00:00 committed by Jesse Pretorius (odyssey4me)
parent 635e3a6030
commit 038e3c1cf6
2 changed files with 8 additions and 50 deletions

View File

@ -18,7 +18,7 @@ galaxy_info:
description: Installation and setup of Zaqar
company: OpenStack
license: Apache2
min_ansible_version: 1.9
min_ansible_version: 2.0
platforms:
- name: Ubuntu
versions:

View File

@ -48,47 +48,15 @@
- zaqar-install
- zaqar-pip-packages
- name: Get local venv checksum
stat:
path: "/var/cache/{{ zaqar_venv_download_url | basename }}"
get_md5: False
when:
- not zaqar_developer_mode | bool
- not zaqar_local_mode | bool
register: local_venv_stat
tags:
- zaqar-install
- zaqar-pip-packages
- name: Get remote venv checksum
uri:
url: "{{ zaqar_venv_download_url | replace('tgz', 'checksum') }}"
return_content: True
when:
- not zaqar_developer_mode | bool
- not zaqar_local_mode | bool
register: remote_venv_checksum
tags:
- zaqar-install
- zaqar-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: "{{ zaqar_venv_download_url }}"
dest: "/var/cache/{{ zaqar_venv_download_url | basename }}"
force: yes
failed_when: false
register: get_venv
checksum: "sha1:{{ lookup('url', zaqar_venv_download_url | replace('tgz', 'checksum')) }}"
register: zaqar_get_venv
when:
- not zaqar_developer_mode | bool
- not zaqar_local_mode | 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:
- zaqar-install
- zaqar-pip-packages
@ -97,16 +65,8 @@
copy:
src: "{{ zaqar_venv_localpath }}"
dest: "/var/cache/"
register: get_venv
when:
- zaqar_local_mode | bool
tags:
- zaqar-install
- zaqar-pip-packages
- name: Set zaqar get_venv fact
set_fact:
zaqar_get_venv: "{{ get_venv }}"
register: zaqar_get_venv
when: zaqar_local_mode | bool
tags:
- zaqar-install
- zaqar-pip-packages
@ -115,8 +75,7 @@
file:
path: "{{ zaqar_bin | dirname }}"
state: absent
when:
- zaqar_get_venv | changed
when: zaqar_get_venv | changed
tags:
- zaqar-install
- zaqar-pip-packages
@ -158,8 +117,7 @@
until: install_packages|success
retries: 5
delay: 2
when:
- zaqar_get_venv | failed or zaqar_developer_mode | bool or zaqar_local_mode | bool
when: zaqar_developer_mode | bool or zaqar_local_mode | bool
# notify:
# - Restart zaqar api
tags:
@ -171,7 +129,7 @@
virtualenv-tools --update-path=auto {{ zaqar_bin | dirname }}
when:
- not zaqar_developer_mode | bool or zaqar_local_mode | bool
- zaqar_get_venv | success
- zaqar_get_venv | changed or zaqar_venv_dir | changed
tags:
- zaqar-install
- zaqar-pip-packages