0e00919287
There is currently a mismatch between the apt pin priorities for the erlang and server rabbitmq repos. This patch sets the pinning to be the same. This should not affect normal package installation as recent changes to this role require installation of a specific version and will fail "safe" should that be unavailable. The intention with this patch is to ensure that the behaviour is the same for both the erlang and server repos in an abnormal situation where the installation might fail. Change-Id: I0d988572a102ca148059d198379d2a3115ecb795
131 lines
4.4 KiB
YAML
131 lines
4.4 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: Validate repo config is deb822 format
|
|
vars:
|
|
_repo_check: "{{ (rabbitmq_repo + rabbitmq_erlang_repo) | selectattr('repo', 'defined') | map(attribute='repo') }}"
|
|
ansible.builtin.assert:
|
|
that: _repo_check | length == 0
|
|
fail_msg: "The following repository definitions must be updated to deb822 format {{ _repo_check }}"
|
|
|
|
- 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_package_pinning_state: "{{ (rabbitmq_install_method == 'external_repo') | ternary('present', 'absent') }}"
|
|
apt_pinned_packages:
|
|
- package: "*"
|
|
release: "cloudsmith/rabbitmq/rabbitmq-erlang"
|
|
- package: "*"
|
|
release: "cloudsmith/rabbitmq/rabbitmq-server"
|
|
- package: "erlang*"
|
|
version: "1:{{ rabbitmq_erlang_package_version }}"
|
|
priority: 1000
|
|
- package: "rabbitmq-server"
|
|
version: "{{ rabbitmq_package_version }}"
|
|
priority: 1000
|
|
|
|
# NOTE(jrosser) remove this task for the 2025.2 release
|
|
- name: Clean up legacy repository config not in deb822 format
|
|
vars:
|
|
rabbitmq_apt_repo_cleanup:
|
|
- RabbitMQ.list
|
|
- els_erlang.list
|
|
file:
|
|
path: "/etc/apt/sources.list.d/{{ item }}"
|
|
state: absent
|
|
with_items: "{{ rabbitmq_apt_repo_cleanup }}"
|
|
register: apt_repo_removed
|
|
|
|
- name: Ensure python3-debian package is available
|
|
apt:
|
|
name: python3-debian
|
|
|
|
- name: Manage apt repositories
|
|
ansible.builtin.deb822_repository:
|
|
allow_downgrade_to_insecure: "{{ item.allow_downgrade_to_insecure | default(omit) }}"
|
|
allow_insecure: "{{ item.allow_insecure | default(omit) }}"
|
|
allow_weak: "{{ item.allow_weak | default(omit) }}"
|
|
architectures: "{{ item.architectures | default(omit) }}"
|
|
by_hash: "{{ item.by_hash | default(omit) }}"
|
|
check_date: "{{ item.check_date | default(omit) }}"
|
|
check_valid_until: "{{ item.check_valid_until | default(omit) }}"
|
|
components: "{{ item.components | default(omit) }}"
|
|
date_max_future: "{{ item.date_max_future | default(omit) }}"
|
|
enabled: "{{ item.enabled | default(omit) }}"
|
|
inrelease_path: "{{ item.inrelease_path | default(omit) }}"
|
|
languages: "{{ item.languages | default(omit) }}"
|
|
mode: "{{ item.mode | default(omit) }}"
|
|
name: "{{ item.name }}"
|
|
pdiffs: "{{ item.pdiffs | default(omit) }}"
|
|
signed_by: "{{ item.signed_by | default(omit) }}"
|
|
state: "{{ item.state | default(omit) }}"
|
|
suites: "{{ item.suites | default(omit) }}"
|
|
targets: "{{ item.targets | default(omit) }}"
|
|
trusted: "{{ item.trusted | default(omit) }}"
|
|
types: "{{ item.types | default(omit) }}"
|
|
uris: "{{ item.uris | default(omit) }}"
|
|
with_items: "{{ rabbitmq_repo + rabbitmq_erlang_repo }}"
|
|
register: deb822_repos
|
|
|
|
- name: Update apt repositories when config is changed
|
|
apt:
|
|
update_cache: yes
|
|
when: (apt_repo_removed is changed) or (deb822_repos is changed)
|
|
|
|
- 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
|
|
notify:
|
|
- RabbitMQ restart
|
|
tags:
|
|
- rabbitmq-apt-packages
|
|
|
|
- name: Install the RabbitMQ package deb
|
|
apt:
|
|
deb: "{{ rabbitmq_package_path }}"
|
|
register: install_rabbitmq
|
|
notify:
|
|
- RabbitMQ restart
|
|
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
|
|
notify:
|
|
- RabbitMQ restart
|
|
when:
|
|
- rabbitmq_install_method != 'file'
|
|
tags:
|
|
- rabbitmq-apt-packages
|