diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml index 12a2057..098d79c 100644 --- a/roles/postgres/tasks/main.yml +++ b/roles/postgres/tasks/main.yml @@ -1,47 +1,60 @@ -- name: Install PostgreSQL +- name: Install PostgreSQL packages apt: name: - - postgresql-{{ pg_version }} + - postgresql - postgresql-contrib update_cache: yes -- name: Stop postgres before config - service: - name: postgresql - state: stopped +# --- Dynamiczne wykrywanie wersji PostgreSQL --- +- name: Detect installed PostgreSQL version + command: "ls /etc/postgresql | sort -V | tail -n1" + register: pg_version_result +- name: Set PostgreSQL version fact + set_fact: + pg_version: "{{ pg_version_result.stdout }}" + +- name: Define PostgreSQL cluster path + set_fact: + pg_cluster_path: "/etc/postgresql/{{ pg_version }}/main" + +# --- Stop cluster before config --- +- name: Stop PostgreSQL cluster + shell: "pg_ctlcluster {{ pg_version }} main stop" + args: + warn: false + ignore_errors: true + +# --- Configure PostgreSQL --- - name: postgresql.conf template: src: postgresql.conf.j2 - dest: /etc/postgresql/{{ pg_version }}/main/postgresql.conf + dest: "{{ pg_cluster_path }}/postgresql.conf" - name: pg_hba.conf template: src: pg_hba.conf.j2 - dest: /etc/postgresql/{{ pg_version }}/main/pg_hba.conf + dest: "{{ pg_cluster_path }}/pg_hba.conf" -- name: TLS cert dir - file: - path: /etc/postgresql/ssl - state: directory - owner: postgres - mode: "700" +# --- Ensure cluster exists and started --- +- name: Ensure PostgreSQL cluster exists + shell: | + if ! pg_lsclusters | grep -q " {{ pg_version }} main "; then + pg_createcluster {{ pg_version }} main --start + else + pg_ctlcluster {{ pg_version }} main start + fi -- name: Copy TLS cert - copy: - src: pg.crt - dest: /etc/postgresql/ssl/pg.crt - owner: postgres - mode: "600" +# --- Wait for socket to be ready --- +- name: Wait for PostgreSQL socket + wait_for: + path: "/var/run/postgresql/{{ pg_version }}-main/.s.PGSQL.5432" + timeout: 60 -- name: Copy TLS key - copy: - src: pg.key - dest: /etc/postgresql/ssl/pg.key - owner: postgres - mode: "600" - -- name: Start postgres - service: - name: postgresql - state: started +# --- Install Python PostgreSQL libraries --- +- name: Install python postgres libraries + apt: + name: + - python3-psycopg2 + state: present + update_cache: yes