--- # postgres/tasks/main.yml - name: Create stack and config directories file: path: "{{ item }}" state: directory owner: "{{ container_user }}" group: "{{ container_group }}" mode: "0755" loop: "{{ postgres_base_directories }}" - name: Directory SELinux requirement ansible.builtin.set_fact: selinux_container_paths: "{{ postgres_base_directories }}" - import_role: name: selinux_containers tasks_from: labels - name: Ensure container app config directories are owned by container UID become: true file: path: "{{ postgres_config_dir }}" state: directory owner: "{{ container_user }}" group: "{{ container_group }}" recurse: true - name: Deploy Postgres Quadlet template: src: postgres.container.j2 dest: "{{ container_config_dir }}/postgres.container" owner: "{{ container_user }}" group: "{{ container_group }}" mode: "0600" - name: Force systemd reload (blocking) become: true become_user: "{{ container_user }}" environment: XDG_RUNTIME_DIR: "{{ container_runtime_dir }}" command: systemctl --user daemon-reload - name: Wait for quadlet generation pause: seconds: 1 - name: Start and enable Postgres service become: true become_user: "{{ container_user }}" environment: XDG_RUNTIME_DIR: "{{ container_runtime_dir }}" systemd: name: postgres.service scope: user state: started enabled: true - name: Wait for Postgres to be ready (Handling the double-start) become: true become_user: "{{ container_user }}" environment: XDG_RUNTIME_DIR: "{{ container_runtime_dir }}" ansible.builtin.command: cmd: "podman exec postgres pg_isready -U synapse -d synapse" register: pg_check until: pg_check.rc == 0 retries: 20 delay: 5 changed_when: false