Files
openstack-ansible-rabbitmq_…/tasks/install_apt.yml
Dmitriy Rabotyagov a05788828f Change repository for deb to deb1.rabbitmq.com
RabbitMQ has changed their docs to suggest using deb1.rabbitmq.com
instead of ppa1.rabbitmq.com.

We need to clean up old repo record as well, because apt_repository only
appends to the repo.

Change-Id: I98dfeb1706701787e7a7e912e37910108cec3a10
Signed-off-by: Dmitriy Rabotyagov <dmitriy.rabotyagov@cleura.com>
2025-11-19 16:36:48 +01:00

148 lines
4.7 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
when:
- rabbitmq_install_method == 'external_repo'
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) }}"
when:
- rabbitmq_install_method == 'external_repo'
with_items: "{{ rabbitmq_gpg_keys | selectattr('file', 'defined') | list }}"
tags:
- rabbitmq-apt-keys
- name: Clean up old repos
apt_repository:
repo: "{{ item.repo }}"
state: absent
filename: "{{ item.file }}"
vars:
_erlang_old_url: "https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/{{ ansible_facts['distribution'] | lower }}"
_rabbitmq_old_url: https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/{{ ansible_facts['distribution'] | lower }}
loop:
- repo: "deb {{ _rabbitmq_old_url }} {{ ansible_facts['distribution_release'] | lower }} main"
file: RabbitMQ
- repo: "deb {{ _erlang_old_url }} {{ ansible_facts['distribution_release'] | lower }} main"
file: els_erlang
# 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
# 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