Changeset - 3d7effd414c9
[Not reviewed]
5 7 0
Branko Majic (branko) - 5 months ago 2023-12-02 21:27:37
branko@majic.rs
MAR-189: Dropped deprecation-related tasks and tests for xmpp_server role:

- Migration from Prosody project repositories should have been done
already as part of the 7.0.1 release.
- Simplifies the code a bit.
- Drop leftover deprecated library plugin path.
12 files changed with 2 insertions and 543 deletions:
0 comments (0 inline, 0 general)
roles/xmpp_server/molecule/default/files/lua_ldap_backports_pin
Show inline comments
 
deleted file
roles/xmpp_server/molecule/default/files/prosody-debian-gpg-key.asc
Show inline comments
 
deleted file
roles/xmpp_server/molecule/default/files/workaround_prosody_repository_signing_key.asc
Show inline comments
 
deleted file
roles/xmpp_server/molecule/default/group_vars/deprecated.yml
Show inline comments
 
deleted file
roles/xmpp_server/molecule/default/molecule.yml
Show inline comments
 
@@ -63,19 +63,6 @@ platforms:
 
        network_name: private_network
 
        type: static
 

	
 
  - name: deprecated-buster64
 
    groups:
 
      - deprecated
 
      - buster
 
    box: debian/contrib-buster64
 
    memory: 512
 
    cpus: 1
 
    interfaces:
 
      - auto_config: true
 
        ip: 192.168.56.33
 
        network_name: private_network
 
        type: static
 

	
 
provisioner:
 
  name: ansible
 
  playbooks:
roles/xmpp_server/molecule/default/playbook.yml
Show inline comments
 
---
 

	
 
- hosts: parameters-mandatory,parameters-optional,deprecated
 
- hosts: parameters-mandatory,parameters-optional
 
  become: true
 
  roles:
 
    - xmpp_server
roles/xmpp_server/molecule/default/prepare.yml
Show inline comments
 
@@ -37,12 +37,6 @@
 
            - domain3
 
            - proxy.domain3
 
            - conference.domain3
 
        - name: deprecated-buster64_xmpp
 
          fqdn:
 
            - deprecated
 
            - domain4
 
            - proxy.domain4
 
            - conference.domain4
 

	
 
    - name: Set-up link to generated X.509 material
 
      file:
 
@@ -99,7 +93,6 @@
 
        192.168.56.21: "client-buster"
 
        192.168.56.31: "parameters-mandatory domain1 proxy.domain1 conference.domain1"
 
        192.168.56.32: "parameters-optional domain2 proxy.domain2 conference.domain2 domain3 proxy.domain3 conference.domain3"
 
        192.168.56.33: "deprecated domain4 proxy.domain4 conference.domain4"
 

	
 
    - name: Enable TLSv1.0+ in global OpenSSL configuration file in order to be able to test the xmpp_server_tls_protocol parameter
 
      lineinfile:
 
@@ -111,65 +104,6 @@
 
        mode: 0644
 
        state: present
 

	
 
    # @WORKAROUND: Prosody repository override
 
    #
 
    # Prosody project has killed off Debian Buster repositories. Trick
 
    # the system to install packages from custom repository location
 
    # instead.
 
    - name: Override server IP for Prosody repository via hosts file
 
      lineinfile:
 
        path: /etc/hosts
 
        regexp:
 
        line: "{{ lookup('dig', 'prosody.repo.majic.rs') }} packages.prosody.im"
 
        owner: root
 
        group: root
 
        mode: 0644
 
        state: present
 
      tags:
 
        - workaround:prosody_repository_override
 

	
 
    - name: Add workaround Prosody repository signing key
 
      apt_key:
 
        data: "{{ lookup('file', 'workaround_prosody_repository_signing_key.asc') }}"
 
        state: present
 
      tags:
 
        - workaround:prosody_repository_override
 

	
 
- hosts: deprecated
 
  become: true
 
  tasks:
 

	
 
    - name: Add Prosody repository signing key
 
      apt_key:
 
        data: "{{ lookup('file', 'prosody-debian-gpg-key.asc') }}"
 
        state: present
 

	
 
    - name: Add Prosody repository
 
      apt_repository:
 
        repo: "deb http://packages.prosody.im/debian {{ ansible_distribution_release }} main"
 
        state: present
 

	
 
    - name: Install Prosody (from Prosody repository)
 
      apt:
 
        name: prosody-0.11
 
        state: present
 

	
 
    - name: Set-up directory for storing additional Prosody modules
 
      file:
 
        path: "/usr/local/lib/prosody/modules/"
 
        state: directory
 
        owner: root
 
        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:
 
@@ -238,11 +172,6 @@
 
          server: domain1
 
          security: tls
 
          nickname: noxmpp
 
        - jid: eve.doe@domain4
 
          password: evepassword
 
          server: domain4
 
          security: tls
 
          nickname: eve.doe
 

	
 
  handlers:
 

	
 
@@ -309,17 +238,6 @@
 
            sn: XMPP
 
            mail: noxmpp@domain1
 

	
 
        - dn: uid=eve,ou=people,dc=local
 
          objectClass:
 
            - inetOrgPerson
 
            - simpleSecurityObject
 
          attributes:
 
            userPassword: evepassword
 
            uid: eve
 
            cn: Eve Doe
 
            sn: Doe
 
            mail: eve.doe@domain4
 

	
 
    - name: Add test accounts to correct group
 
      ldap_attr:
 
        dn: "cn=xmpp,ou=groups,dc=local"
 
@@ -331,7 +249,7 @@
 
          - uid=mick,ou=people,dc=local
 
          - uid=eve,ou=people,dc=local
 

	
 
- hosts: parameters-mandatory,parameters-optional,deprecated
 
- hosts: parameters-mandatory,parameters-optional
 
  become: true
 
  tasks:
 

	
roles/xmpp_server/molecule/default/tests/test_client.py
Show inline comments
 
@@ -28,7 +28,6 @@ def test_connectivity(host):
 
@pytest.mark.parametrize("username, password, domain", [
 
    ["john.doe", "johnpassword", "domain1"],
 
    ["jane.doe", "janepassword", "domain2"],
 
    ["eve.doe", "evepassword", "domain4"],
 
])
 
def test_tls(host, username, password, domain):
 
    """
 
@@ -47,7 +46,6 @@ def test_tls(host, username, password, domain):
 
@pytest.mark.parametrize("username, password, domain", [
 
    ["john.doe", "johnpassword", "domain1"],
 
    ["jane.doe", "janepassword", "domain2"],
 
    ["eve.doe", "evepassword", "domain4"],
 
])
 
def test_authentication_requires_tls(host, username, password, domain):
 
    """
 
@@ -63,7 +61,6 @@ def test_authentication_requires_tls(host, username, password, domain):
 
    ["john.doe", "johnpassword", "domain1"],
 
    ["jane.doe", "janepassword", "domain2"],
 
    ["mick.doe", "mickpassword", "domain3"],
 
    ["eve.doe", "evepassword", "domain4"],
 
])
 
def test_authentication(host, username, password, domain):
 
    """
 
@@ -82,7 +79,6 @@ def test_authentication(host, username, password, domain):
 
@pytest.mark.parametrize("target_username, target_domain", [
 
    ["john.doe", "domain1"],
 
    ["jane.doe", "domain2"],
 
    ["eve.doe", "domain4"],
 
])
 
def test_unauthorized_users_rejected(host, target_username, target_domain):
 
    """
roles/xmpp_server/molecule/default/tests/test_default.py
Show inline comments
 
@@ -6,9 +6,6 @@ import testinfra.utils.ansible_runner
 
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
 
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-*')
 

	
 
testinfra_hosts += testinfra.utils.ansible_runner.AnsibleRunner(
 
    os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('deprecated')
 

	
 

	
 
def test_installed_packages(host):
 
    """
roles/xmpp_server/molecule/default/tests/test_deprecated.py
Show inline comments
 
deleted file
roles/xmpp_server/tasks/main.yml
Show inline comments
 
@@ -8,63 +8,6 @@
 
    name: python-apt
 

	
 

	
 
# Deprecation
 
# ===========
 

	
 
- name: Drop directory for storing custom Prosody modules
 
  file:
 
    path: "/usr/local/lib/prosody/"
 
    state: absent
 
  notify:
 
    - Restart Prosody
 

	
 
- name: Collect information about installed packages
 
  package_facts:
 

	
 
- name: Uninstall Prosody from project-provided repository
 
  apt:
 
    name: prosody
 
    state: absent
 
  when:
 
    - "ansible_facts.packages['prosody'] is defined"
 
    - "'nightly' in ansible_facts.packages['prosody'][0].version"
 

	
 
- name: Uninstall Prosody dependencies from project-provided repository
 
  apt:
 
    name:
 
      - lua-expat
 
      - lua-filesystem
 
      - lua-sec
 
      - lua-socket
 
    state: absent
 
  when: >-
 
    (ansible_facts.packages['lua-expat'] is defined and 'prosody' in ansible_facts.packages['lua-expat'][0].version)
 
    or (ansible_facts.packages['lua-filesystem'] is defined and 'prosody' in ansible_facts.packages['lua-filesystem'][0].version)
 
    or (ansible_facts.packages['lua-sec'] is defined and 'prosody' in ansible_facts.packages['lua-sec'][0].version)
 
    or (ansible_facts.packages['lua-socket'] is defined and 'prosody' in ansible_facts.packages['lua-socket'][0].version)
 

	
 
- name: Remove Prosody project-provided apt key
 
  apt_key:
 
    id: "{{ item }}"
 
    state: absent
 
  with_items:
 
    - "107D65A0A148C237FDF00AB47393D7E674D9DBB5"
 
    - "44AB6DD06DA46979CFAF997F9B1B82786C8F28BA"
 

	
 
- name: Remove Prosody project-provided repository
 
  apt_repository:
 
    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
 
# ===================
 

	
roles/xmpp_server/templates/prosody.cfg.lua.j2
Show inline comments
 
-- Additional paths to search for modules.
 
plugin_paths = { "/usr/local/lib/prosody/modules/" }
 

	
 
-- List of server administrators.
 
admins = { {% for admin in xmpp_administrators %}"{{ admin }}", {% endfor %} }
 

	
0 comments (0 inline, 0 general)