--- # Attach this app's network to the shared Postgres unit. # # Postgres knows nothing about its clients, exactly like Caddy: a service joins # by dropping 50-nextcloud.conf and the shared 10-network-aliases.conf next to # postgres.container. The canonical way to do that is the shared include below — # it writes the same bytes every service writes, asserts that nextcloud.network # already exists, and notifies the "Restart Postgres" handler defined in this # role. # # This runs in the roles phase, which is after the register include in # playbook.yml's pre_tasks has created nextcloud.network. - name: Attach Nextcloud to Postgres ansible.builtin.include_tasks: "{{ playbook_dir }}/../postgres/roles/attach/tasks/main.yaml" # On a first attach both drop-ins are new, so Postgres has to be recreated to # join nextcloud_net — and that restart is a *handler*, which by default runs at # the end of the play, after the nextcloud role has already started the app. The # app would then come up before `db` resolves, fail its own readiness check, and # fail the play on a machine where nothing is actually wrong. # # Flushing applies the new drop-in before the app starts. It also flushes the # "Restart Caddy" that the register pre_task queued, which is what attaches Caddy # to nextcloud_net — also wanted before the app is expected to serve. On later # runs nothing is pending and this is a no-op. - name: Apply the Postgres network change before starting Nextcloud ansible.builtin.meta: flush_handlers