--- - name: Attach Nextcloud to Postgres ansible.builtin.include_tasks: "{{ playbook_dir }}/../postgres/roles/attach/tasks/main.yaml" # The restart that joins Postgres to nextcloud_net is a handler, so flush it before the app starts. This also applies the queued Caddy restart. - name: Apply the network change before starting Nextcloud ansible.builtin.meta: flush_handlers # On a fresh cluster the installer would fail without this database, and the retry covers the restart the flush did. - name: Check whether the {{ pg_database }} database exists ansible.builtin.command: >- podman exec -e PGPASSWORD={{ pg_password }} {{ postgres_container }} psql -U {{ pg_user }} -d postgres -tAc "select datname from pg_database where datname = '{{ pg_database }}'" register: nextcloud_db until: nextcloud_db.rc == 0 retries: 12 delay: 5 changed_when: false failed_when: false - name: Fail if the shared Postgres is not reachable ansible.builtin.assert: that: nextcloud_db.rc == 0 fail_msg: >- {{ postgres_container }} did not answer. Run postgres/playbook.yml on this host first — this play attaches to that cluster and creates its own database in it. - name: Create the {{ pg_database }} database ansible.builtin.command: >- podman exec -e PGPASSWORD={{ pg_password }} {{ postgres_container }} createdb -U {{ pg_user }} -O {{ pg_user }} {{ pg_database }} when: nextcloud_db.stdout | trim | length == 0