Optimise apt cache update task

The update of the apt cache and the package installation
can all be handled in a single task by providing the
package action plugin with the right parameters. This
removes an extra task to optimise execution.

The minimum Ansible version is raised to 2.2 due to a
known bug [1] in Ansible's apt module which does not
update the cache properly if the cache update and the
install are combined in a single task.

[1] https://github.com/ansible/ansible-modules-core/issues/1497

Change-Id: If6b3261bba643759f12a811d849ce9cb1040497f
This commit is contained in:
Jesse Pretorius 2017-04-21 16:44:30 +01:00
parent 4dc9dc23cf
commit 0b11c78551
2 changed files with 13 additions and 8 deletions

View File

@ -18,7 +18,7 @@ galaxy_info:
description: Installation and setup of keystone
company: Rackspace
license: Apache2
min_ansible_version: 2.0
min_ansible_version: 2.2
platforms:
- name: Ubuntu
versions:

View File

@ -49,17 +49,12 @@
- ansible_pkg_mgr == 'yum'
- keystone_sp != {}
- name: Ensure apt cache is up to date
apt:
update_cache: yes
cache_valid_time: "{{ cache_timeout }}"
when:
- ansible_pkg_mgr == 'apt'
- name: Install distro packages
package:
name: "{{ item }}"
state: "{{ keystone_package_state }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages | success
retries: 5
@ -70,6 +65,8 @@
package:
name: "{{ item }}"
state: "{{ keystone_package_state }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages | success
retries: 5
@ -83,6 +80,8 @@
package:
name: "{{ item }}"
state: "{{ keystone_package_state }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages | success
retries: 5
@ -97,6 +96,8 @@
name: "{{ item }}"
state: "{{ (keystone_idp != {}) | ternary(keystone_package_state, 'absent') }}"
autoremove: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
when:
- keystone_apache_enabled | bool
register: install_packages
@ -113,6 +114,8 @@
name: "{{ item }}"
state: "{{ (keystone_sp != {}) | ternary(keystone_package_state, 'absent') }}"
autoremove: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
when:
- keystone_apache_enabled | bool
register: install_packages
@ -129,6 +132,8 @@
name: "{{ item }}"
state: "{{ (keystone_developer_mode | bool) | ternary(keystone_package_state, 'absent') }}"
autoremove: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}"
cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}"
register: install_packages
until: install_packages | success
retries: 5