--- # Copyright 2017, 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. # APT configuration tasks that apply on all nodes. - name: Install gpg tooling for key management apt: name: gnupg state: "{{ openstack_hosts_package_state }}" register: _install_gpg until: _install_gpg is success retries: 5 delay: 2 - name: Add/Remove repositories gpg keys manually apt_key: id: "{{ key.id | default(omit) }}" data: "{{ key.data | default(omit) }}" keyserver: "{{ key.keyserver | default(omit) }}" url: "{{ key.url | default(omit) }}" state: "{{ key.state | default('present') }}" with_items: "{{ openstack_hosts_package_repos_keys }}" loop_control: loop_var: key register: _add_apt_keys until: _add_apt_keys is success retries: 5 delay: 2 - name: Add requirement packages (repositories gpg keys, toolkits...) apt: name: "{{ openstack_hosts_package_list | rejectattr('state','equalto','absent') | map(attribute='name') | list }}" state: "{{ openstack_hosts_package_state }}" update_cache: yes cache_valid_time: "{{ cache_timeout }}" register: _install_packages until: _install_packages is success retries: 5 delay: 2 - name: Remove any old UCA repository using the old filename file: path: "{{ uca_apt_source_list_filename | default('ubuntu_cloud_archive_canonical_com_ubuntu') }}" state: absent # 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 separate tasks. - name: Add/Remove/Update standard and user defined repositories apt_repository: repo: "{{ repo.repo }}" state: "{{ repo.state | default('present') }}" filename: "{{ repo.filename | default(omit) }}" update_cache: no with_items: "{{ openstack_hosts_package_repos }}" loop_control: loop_var: repo register: _adding_apt_repo - name: Add apt extra conf copy: content: "{{ openstack_hosts_package_manager_default_conf + openstack_hosts_package_manager_extra_conf }}" dest: /etc/apt/apt.conf.d/99openstack-ansible when: - openstack_hosts_package_manager_extra_conf | length > 0 or openstack_hosts_package_manager_default_conf | length > 0 - name: Update Apt cache apt: update_cache: yes when: - _adding_apt_repo is changed register: _update_apt_cache until: _update_apt_cache is success changed_when: false retries: 5 delay: 2