fix(nextcloud): make occ-driven config tasks idempotent
Every `occ config:app:set` / `ldap:set-config` / `notify_push:setup` call previously fired on every play, marking changed even when the stored value already matched. Now we read the current value first and only invoke the setter when it differs: * richdocuments (collabora): pre-read wopi_url, public_wopi_url, disable_certificate_verification, wopi_allowlist into a fact map; guard each `config:app:set` and tag `richdocuments:activate-config` with `changed_when: false` since it's a discovery refresh. * drawio: same pattern for DrawioUrl, DrawioTheme, DrawioOffline, comparing as strings (occ stores booleans as "1"/"0"). * user_ldap: pre-read `ldap:show-config s01 --output=json`, parse JSON defensively (occ logs interleave on stderr), and skip per-key `ldap:set-config` calls when the stored value already equals the desired one. * notify_push: skip `notify_push:setup` when the stored base_endpoint already matches the computed URL. * plugins: `app:install`/`app:enable` were treating "already installed/ enabled" output as a change. Add the negative match to `changed_when` so re-runs of a fully-provisioned site report ok rather than changed.
This commit is contained in:
parent
1157448d59
commit
aea6dec081
5 changed files with 89 additions and 7 deletions
|
|
@ -8,7 +8,9 @@
|
|||
chdir: "{{ nextcloud_docker_compose_dir }}"
|
||||
loop: "{{ nextcloud_apps_to_install }}"
|
||||
register: app_install_result
|
||||
changed_when: "'installed' in app_install_result.stdout"
|
||||
changed_when:
|
||||
- "'already installed' not in app_install_result.stdout"
|
||||
- "'installed' in app_install_result.stdout"
|
||||
failed_when:
|
||||
- app_install_result.rc != 0
|
||||
- "'already installed' not in app_install_result.stdout"
|
||||
|
|
@ -19,7 +21,9 @@
|
|||
chdir: "{{ nextcloud_docker_compose_dir }}"
|
||||
loop: "{{ nextcloud_apps_to_install }}"
|
||||
register: app_enable_result
|
||||
changed_when: "'enabled' in app_enable_result.stdout"
|
||||
changed_when:
|
||||
- "'already enabled' not in app_enable_result.stdout"
|
||||
- "'enabled' in app_enable_result.stdout"
|
||||
failed_when:
|
||||
- app_enable_result.rc != 0
|
||||
- "'already enabled' not in app_enable_result.stdout"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue