From b3e67fd6c0c1d8e1fc20f271091eb8e6baca67b9 2023-11-26 15:48:38 From: Branko Majic Date: 2023-11-26 15:48:38 Subject: [PATCH] MAR-187: Reorder the deprecation tasks for xmpp_server role to make the runs reliable: - Deprecated apt repository really needs to be removed first in case it has an unresolvable URL (so the backports repository cache update would trigger correctly). - Use the file removal for Prosody repository as well to make sure the file is dropped. --- diff --git a/docs/releasenotes.rst b/docs/releasenotes.rst index c8acea2523881df98c1cf1eba425e7242628f16d..5ffb5fcaf3c61cf34b6bf45705f185d1087703a6 100644 --- a/docs/releasenotes.rst +++ b/docs/releasenotes.rst @@ -2,6 +2,21 @@ Release notes ============= +x.y.z +----- + +Minor bug-fixes. + +**Bug fixes:** + +* ``xmpp_server`` role + + * Make sure to take care of deprecation-related package and + configuration removals prior to running the rest of the tasks to + avoid errors relaetd to deprecated elements being invalid (like + repository URLs for Prosody). + + 7.0.0 ----- diff --git a/roles/xmpp_server/molecule/default/prepare.yml b/roles/xmpp_server/molecule/default/prepare.yml index d110337e00d0931a7a3ac4d8c7685637bb91b61c..eeda79bca588c374baf13cf6260375a16f6f6c63 100644 --- a/roles/xmpp_server/molecule/default/prepare.yml +++ b/roles/xmpp_server/molecule/default/prepare.yml @@ -162,6 +162,14 @@ group: root mode: 0755 + - name: Invalidate the Prosody repository URL for testing if the file gets dropped at correct time during initial converge + copy: + content: "deb http://invalidname/debian buster main" + dest: "/etc/apt/sources.list.d/packages_prosody_im_debian.list" + owner: root + group: root + mode: 0644 + - hosts: clients become: true tasks: diff --git a/roles/xmpp_server/tasks/main.yml b/roles/xmpp_server/tasks/main.yml index 0ecc11151c65e44dc7c97e68a7991ccdb127e120..a1b29a99df79174affce1030031ce84d9dc916eb 100644 --- a/roles/xmpp_server/tasks/main.yml +++ b/roles/xmpp_server/tasks/main.yml @@ -1,37 +1,17 @@ --- +# Ansible pre-requisites +# ====================== + - name: Install Python apt bindings apt: name: python-apt -- name: Set-up the Debian backports repository - template: - src: backports.list.j2 - dest: /etc/apt/sources.list.d/backports.list - owner: root - group: root - mode: 0644 - register: backports_repository_configuration -- name: Update apt cache if backports repository configuration changed (for immediate use) # noqa 503 - # [503] Tasks that run when changed should likely be handlers - # Since apt_repository module is not reliable (does not deploy - # change when changing distro version etc), we have to use - # template instead, but this also means we need to trigger the apt - # cache reload by hand. - apt: - update_cache: true - when: backports_repository_configuration.changed - -- name: Configure package pins to backports for Prosody - template: - src: prosody_backports_pin.j2 - dest: /etc/apt/preferences.d/prosody - owner: root - group: root - mode: 0644 +# Deprecation +# =========== -- name: Drop directory for storing custom Prosody modules (deprecation) +- name: Drop directory for storing custom Prosody modules file: path: "/usr/local/lib/prosody/" state: absent @@ -76,6 +56,45 @@ repo: "deb http://packages.prosody.im/debian {{ ansible_distribution_release }} main" state: absent +# Remove the repository configuration file based on path as well, just +# to be on the safe side (in case the file was manually modified, and +# did not get detected properly by apt_repository module). +- name: Remove Prosody project-provided repository (double-tap) + file: + path: "/etc/apt/sources.list.d/packages_prosody_im_debian.list" + state: absent + + +# Main implementation +# =================== + +- name: Set-up the Debian backports repository + template: + src: backports.list.j2 + dest: /etc/apt/sources.list.d/backports.list + owner: root + group: root + mode: 0644 + register: backports_repository_configuration + +- name: Update apt cache if backports repository configuration changed (for immediate use) # noqa 503 + # [503] Tasks that run when changed should likely be handlers + # Since apt_repository module is not reliable (does not deploy + # change when changing distro version etc), we have to use + # template instead, but this also means we need to trigger the apt + # cache reload by hand. + apt: + update_cache: true + when: backports_repository_configuration.changed + +- name: Configure package pins to backports for Prosody + template: + src: prosody_backports_pin.j2 + dest: /etc/apt/preferences.d/prosody + owner: root + group: root + mode: 0644 + - name: Install additional Prosody dependencies apt: name: