Files
openstack-ansible-rabbitmq_…/tasks/install_apt.yml
Dmitriy Rabotyagov 3a735007c6 Remove old repos for Debian
It appears that old repo must be removed explicitly and apt_repository
don't have an option for exclusive content when filename defined
So we need to drop old repo after switching to cloudsmith to avoid
fetching data from them and make repos clean during upgrade.

Change-Id: Iffb5dd5f9a1937825e2cc345b720d7af072608c1
2022-02-03 19:30:11 +00:00

148 lines
4.9 KiB
YAML

---
# Copyright 2014, 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: Run the apt package pinning role
include_role:
name: apt_package_pinning
vars:
apt_package_pinning_file_name: "rabbitmq.pref"
apt_package_pinning_priority: 999
apt_pinned_packages:
- package: "*"
release: "cloudsmith/rabbitmq/rabbitmq-erlang"
- package: "erlang*"
version: "{{ rabbitmq_erlang_version_spec }}"
priority: 1000
- package: "rabbitmq-server"
version: "{{ rabbitmq_package_version }}"
priority: 1000
- name: Install GPG keys
apt_key:
data: "{{ lookup('file', item.file) }}"
with_items: "{{ rabbitmq_gpg_keys | selectattr('file', 'defined') | list }}"
tags:
- rabbitmq-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 separate tasks.
- name: Add rabbitmq repo
apt_repository:
repo: "{{ rabbitmq_repo.repo }}"
state: "{{ rabbitmq_repo.state }}"
filename: "{{ rabbitmq_repo.filename | default(omit) }}"
update_cache: no
register: add_rabbitmq_repos
when:
- rabbitmq_install_method == 'external_repo'
tags:
- rabbitmq-repos
# 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 erlang repo
apt_repository:
repo: "{{ rabbitmq_erlang_repo.repo }}"
state: "{{ rabbitmq_erlang_repo.state }}"
filename: "{{ rabbitmq_erlang_repo.filename | default(omit) }}"
update_cache: no
register: add_erlang_repos
when:
- rabbitmq_erlang_install_method == 'external_repo'
tags:
- rabbitmq-repos
# NOTE(noonedeadpunk): Remove this after Z release
- name: Remove old repos
apt_repository:
repo: "{{ item.repo }}"
state: absent
filename: "{{ item.filename | default(omit) }}"
update_cache: no
with_items:
- repo: "deb https://packagecloud.io/rabbitmq/rabbitmq-server/{{ ansible_facts['distribution'] | lower }} {{ ansible_facts['distribution_release'] | lower }} main"
filename: "{{ rabbitmq_repo.filename | default(omit) }}"
condition: "{{ (rabbitmq_install_method == 'external_repo') }}"
- repo: "deb https://packages.erlang-solutions.com/{{ ansible_facts['distribution'] | lower }} {{ ansible_facts['distribution_release'] | lower }} contrib"
filename: "{{ rabbitmq_erlang_repo.filename | default(omit) }}"
condition: "{{ (rabbitmq_erlang_install_method == 'external_repo') }}"
when:
- item.condition | default(True)
- rabbitmq_upgrade | bool
# Due to our Ansible strategy, a skipped task does not
# have a dictionary result, so we have to cater to the
# situation where either of the apt_repository tasks
# may not have the results dict in the register. As
# such we validate that the register is a mapping (dict).
- name: Update Apt cache
apt:
update_cache: yes
when:
- (add_rabbitmq_repos is mapping and add_rabbitmq_repos is changed) or
(add_erlang_repos is mapping and add_erlang_repos is changed)
register: update_apt_cache
until: update_apt_cache is success
retries: 5
delay: 2
tags:
- rabbitmq-repos
- name: Install RabbitMQ package dependencies
apt:
pkg: "{{ rabbitmq_dependencies }}"
state: "{{ rabbitmq_package_state }}"
update_cache: yes
cache_valid_time: "{{ cache_timeout }}"
register: install_packages
until: install_packages is success
retries: 5
delay: 2
tags:
- rabbitmq-apt-packages
- name: Install the RabbitMQ package deb
apt:
deb: "{{ rabbitmq_package_path }}"
register: install_rabbitmq
when:
- rabbitmq_install_method == 'file'
tags:
- rabbitmq-package-deb
- rabbitmq-apt-packages
- name: Install RabbitMQ packages
package:
name: "{{ rabbitmq_distro_packages }}"
state: "{{ rabbitmq_package_state }}"
register: install_packages
until: install_packages is success
retries: 5
delay: 2
when:
- rabbitmq_install_method != 'file'
tags:
- rabbitmq-apt-packages