--- # Attach this app's network to the shared Valkey unit. # # Valkey knows nothing about its clients, exactly like Caddy and Postgres: a # service joins by dropping 50-nextcloud.conf and the shared # 10-network-aliases.conf next to valkey.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 # Valkey" handler defined in this role. # # `redis` is the alias config.php connects to, not the container name: the image # writes the host from REDIS_HOST, which the Docker-era `env:` block set to # `redis`, and the same variable configures PHP's session handler on every start. # Renaming it here would mean editing config.php on a live instance for nothing. - name: Attach Nextcloud to Valkey ansible.builtin.include_tasks: "{{ playbook_dir }}/../valkey/roles/attach/tasks/main.yaml" # On a first attach the drop-in is new, so Valkey 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 `redis` resolves; with `memcache.locking` on Redis it # would fail on the first write rather than at startup, which is a worse failure # to debug. # # Flushing applies the new drop-in before the app starts. On later runs the # drop-in is unchanged, nothing is pending, and this is a no-op. - name: Apply the Valkey network change before starting Nextcloud ansible.builtin.meta: flush_handlers