--- # 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-bitwarden.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 bitwarden.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 bitwarden.network. - name: Attach Bitwarden 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 bitwarden_net — and that restart is a *handler*, which by default runs at # the end of the play, after the bitwarden role has already started the app. The # app would then come up before DATABASE_URL's host resolves, fail its own # health check, and fail the play on a machine where nothing is actually wrong. # # Flushing applies the new drop-in before the app starts. On later runs the # drop-ins are unchanged, nothing is pending, and this is a no-op. - name: Apply the Postgres network change before starting Vaultwarden ansible.builtin.meta: flush_handlers