From 0b11c785514ea60066d51ae4eff9d7e3ededf4d7 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Fri, 21 Apr 2017 16:44:30 +0100 Subject: [PATCH] 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 --- meta/main.yml | 2 +- tasks/keystone_install.yml | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/meta/main.yml b/meta/main.yml index 4b4ea371..08f5c4cc 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -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: diff --git a/tasks/keystone_install.yml b/tasks/keystone_install.yml index 73f984b0..cd9177a0 100644 --- a/tasks/keystone_install.yml +++ b/tasks/keystone_install.yml @@ -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