# roles/web-app-nextcloud/tasks/06_plugin_routines.yml - name: "Launch async: disable incompatible plugins for {{ plugin_key }}" ansible.builtin.command: "{{ nextcloud_docker_exec_occ }} app:disable {{ incompatible_plugin }}" loop: "{{ plugin_value.incompatible_plugins }}" loop_control: loop_var: incompatible_plugin label: "{{ incompatible_plugin }}" when: - plugin_value.incompatible_plugins is defined - plugin_value.incompatible_plugins | length > 0 async: 180 poll: 0 register: disable_incompat_jobs - name: "Wait for disable jobs" vars: jobs_with_id: >- {{ (disable_incompat_jobs.results | default([])) | selectattr('ansible_job_id','defined') | list }} ansible.builtin.async_status: jid: "{{ item.ansible_job_id }}" loop: "{{ jobs_with_id }}" loop_control: label: "{{ item._ansible_item_label }}" register: disable_incompat_wait until: disable_incompat_wait.finished retries: 100 delay: 1 when: - jobs_with_id | length > 0 - nextcloud_wait_for_async_enabled | bool failed_when: > (disable_incompat_wait.rc is defined and disable_incompat_wait.rc|int != 0) and ('No such app enabled' not in (disable_incompat_wait.stdout | default(''))) changed_when: > (disable_incompat_wait.rc | default(0) | int == 0) and ('No such app enabled' not in (disable_incompat_wait.stdout | default(''))) - name: install {{ plugin_key }} nextcloud plugin command: "{{ nextcloud_docker_exec_occ }} app:install {{ plugin_key }}" register: install_result failed_when: > install_result.rc != 0 and ("already installed" not in install_result.stdout) and ("not compatible with this version of the server" not in install_result.stdout) changed_when: > install_result.rc == 0 and ("already installed" not in install_result.stdout) - include_tasks: 07_plugin_enable_and_configure.yml when: - install_result is defined - > install_result.rc == 0 or "already installed" in install_result.stdout