diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml index 7312d64..c565702 100644 --- a/roles/postgres/tasks/main.yml +++ b/roles/postgres/tasks/main.yml @@ -26,20 +26,17 @@ pg_cluster_path: "/etc/postgresql/{{ pg_version }}/{{ pg_cluster }}" pg_data_path: "/var/lib/postgresql/{{ pg_version }}/{{ pg_cluster }}" -- name: Ensure cluster config directory exists - file: - path: "{{ pg_cluster_path }}" - state: directory - owner: postgres - group: postgres - mode: "0700" - # --- Stop cluster before config --- - name: Stop PostgreSQL cluster shell: "pg_ctlcluster {{ pg_version }} {{ pg_cluster }} stop" ignore_errors: true -# --- Ensure data directory exists --- +# --- Remove broken cluster configuration if exists --- +- name: Remove broken cluster configuration + shell: "rm -rf {{ pg_cluster_path }} {{ pg_data_path }}" + ignore_errors: true + +# --- Ensure data directory exists and is owned by postgres --- - name: Create PostgreSQL data directory file: path: "{{ pg_data_path }}" @@ -48,11 +45,20 @@ group: postgres mode: "0700" -# --- Ensure cluster exists --- -- name: Ensure PostgreSQL cluster exists - shell: "pg_createcluster {{ pg_version }} {{ pg_cluster }}" +# --- Initialize database cluster --- +- name: Initialize PostgreSQL cluster + shell: "sudo -u postgres /usr/lib/postgresql/{{ pg_version }}/bin/initdb -D {{ pg_data_path }} --encoding=UTF8 --locale=en_US.UTF-8" ignore_errors: true +# --- Ensure cluster config directory exists --- +- name: Ensure cluster config directory exists + file: + path: "{{ pg_cluster_path }}" + state: directory + owner: postgres + group: postgres + mode: "0700" + # --- Configure PostgreSQL --- - name: postgresql.conf template: @@ -72,7 +78,7 @@ # --- Start cluster --- - name: Start PostgreSQL cluster - shell: "pg_ctlcluster {{ pg_version }} {{ pg_cluster }} start" + shell: "sudo -u postgres /usr/lib/postgresql/{{ pg_version }}/bin/pg_ctl -D {{ pg_data_path }} -l /var/log/postgresql/postgresql-{{ pg_version }}-{{ pg_cluster }}.log start" ignore_errors: true # --- Wait for socket to be ready ---