Homelab-Infra/roles/postgres/tasks/main.yml

70 lines
1.8 KiB
YAML

---
# 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