This reverts commit d8e1f4d83c
because the tasks are implemented that way for the following reason.
If apt_repository fails to update the apt cache after updating the
configuration, retries don't register there was a change and so no
attempt is made to update the cache by the module on the second attempt.
This failure can result in a failure to install packages.
This change adds an apt module task to update the cache if the
apt_repository task registers a change. This means updating the cache
will get retried on failure and no longer fail silently.
This was all explained in the commit message for
I41de2b9a98977bb89de812a9fbc85a9f99d62942 but no notes were
added to the tasks, resulting in the confusion. To prevent this happening
again, we add the comments from Id059dbec3466cb1ef3ea567249f52384a8ade515
into these tasks.
Change-Id: I110f6fa3b6c6341ec4a8bd8cf69ae61bbbb50689
77 lines
2.2 KiB
YAML
77 lines
2.2 KiB
YAML
---
|
|
# Copyright 2016, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
- name: Ensure host can talk to HTTPS apt repos
|
|
apt:
|
|
pkg: "apt-transport-https"
|
|
state: "{{ galera_client_package_state }}"
|
|
update_cache: yes
|
|
cache_valid_time: "{{ cache_timeout }}"
|
|
register: apt_transport_https_check
|
|
until: apt_transport_https_check is success
|
|
retries: 5
|
|
delay: 2
|
|
tags:
|
|
- galera-client-apt-packages
|
|
|
|
- name: If a keyfile is provided, copy the gpg keyfile to the key location
|
|
copy:
|
|
src: "gpg/{{ item.id }}"
|
|
dest: "{{ item.file }}"
|
|
mode: '0644'
|
|
with_items: "{{ galera_client_gpg_keys | selectattr('file','defined') | list }}"
|
|
tags:
|
|
- galera-client-apt-keys
|
|
|
|
- name: Install gpg keys
|
|
apt_key: "{{ key }}"
|
|
with_items: "{{ galera_client_gpg_keys }}"
|
|
loop_control:
|
|
loop_var: key
|
|
register: _add_apt_keys
|
|
until: _add_apt_keys is success
|
|
retries: 5
|
|
delay: 2
|
|
tags:
|
|
- galera-client-apt-keys
|
|
|
|
# When updating the cache in the apt_repository
|
|
# task, and the update fails, a retry does not
|
|
# detect a change the second attempt and therefore
|
|
# does not update the cache, resulting in a changed
|
|
# repo config, but no updated cache. To work around
|
|
# this bug we implement the change of repo config
|
|
# and the cache update as two seperate tasks.
|
|
- name: Add galera repo
|
|
apt_repository:
|
|
repo: "{{ galera_client_repo }}"
|
|
filename: "{{ mariadb_repo_filename }}"
|
|
state: present
|
|
update_cache: no
|
|
register: add_repo
|
|
tags:
|
|
- galera-client-repos
|
|
|
|
- name: Update Apt cache
|
|
apt:
|
|
update_cache: yes
|
|
when: add_repo is changed
|
|
register: update_apt_cache
|
|
until: update_apt_cache is success
|
|
retries: 5
|
|
delay: 2
|
|
tags:
|
|
- galera-client-repos
|