--- - name: Prüfe mailcow-Installation und extrahiere Roundcube-Version aus CHANGELOG.md hosts: all become: true vars: mailcow_search_paths: - /opt - /data - /root - /storage rc_dirs: - rc - roundcube - roundcubemail tasks: - name: Finde mailcow-dockerized Verzeichnis ansible.builtin.find: file_type: directory paths: "{{ mailcow_search_paths }}" patterns: mailcow-dockerized recurse: yes register: mailcow_dir_result ignore_errors: true - name: Setze mailcow_root wenn gefunden ansible.builtin.set_fact: mailcow_root: "{{ mailcow_dir_result.files[0].path }}" when: mailcow_dir_result.matched > 0 - name: Prüfe auf Roundcube-Ordner unter data/web ansible.builtin.stat: path: "{{ mailcow_root }}/data/web/{{ item }}" loop: "{{ rc_dirs }}" register: rc_stat when: mailcow_root is defined - name: Bestimme den tatsächlichen Roundcube-Pfad ansible.builtin.set_fact: rc_path: "{{ mailcow_root }}/data/web/{{ item.item }}" loop: "{{ rc_stat.results }}" when: item.stat.exists and item.stat.isdir - name: Prüfe ob CHANGELOG.md existiert ansible.builtin.stat: path: "{{ rc_path }}/CHANGELOG.md" register: changelog_stat when: rc_path is defined - name: Extrahiere Version aus CHANGELOG.md ansible.builtin.shell: | grep -m1 -Po '(?<=## Release )\S+' {{ rc_path }}/CHANGELOG.md register: rc_version changed_when: false when: - changelog_stat.stat.exists - changelog_stat.stat.isfile - name: Gib gefundene Roundcube-Version aus ansible.builtin.debug: msg: "Roundcube-Version (laut CHANGELOG.md): {{ rc_version.stdout }}" when: rc_version.stdout != "" - name: Warnung wenn keine CHANGELOG.md gefunden wurde ansible.builtin.debug: msg: "Keine CHANGELOG.md unter {{ rc_path }} gefunden." when: - rc_path is defined - not changelog_stat.stat.exists