91 lines
2.3 KiB
YAML
91 lines
2.3 KiB
YAML
- name: Install PostgreSQL packages
|
|
apt:
|
|
name:
|
|
- postgresql
|
|
- postgresql-contrib
|
|
update_cache: yes
|
|
|
|
# --- Detect PostgreSQL version and cluster ---
|
|
- name: Detect PostgreSQL version
|
|
shell: "ls -d /etc/postgresql/*/ | head -n1 | xargs basename"
|
|
register: pg_version_result
|
|
changed_when: false
|
|
|
|
- name: Detect cluster name
|
|
shell: "ls -d /var/lib/postgresql/*/main/ 2>/dev/null | head -n1 | xargs -I {} basename $(dirname {}) | tail -n1"
|
|
register: pg_cluster_result
|
|
changed_when: false
|
|
|
|
- name: Set PostgreSQL version and cluster facts
|
|
set_fact:
|
|
pg_version: "{{ pg_version_result.stdout | trim }}"
|
|
pg_cluster: "main"
|
|
|
|
- name: Define PostgreSQL cluster path
|
|
set_fact:
|
|
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 ---
|
|
- name: Create PostgreSQL data directory
|
|
file:
|
|
path: "{{ pg_data_path }}"
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0700"
|
|
|
|
# --- Ensure cluster exists ---
|
|
- name: Ensure PostgreSQL cluster exists
|
|
shell: "pg_createcluster {{ pg_version }} {{ pg_cluster }}"
|
|
ignore_errors: true
|
|
|
|
# --- Configure PostgreSQL ---
|
|
- name: postgresql.conf
|
|
template:
|
|
src: postgresql.conf.j2
|
|
dest: "{{ pg_cluster_path }}/postgresql.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0600"
|
|
|
|
- name: pg_hba.conf
|
|
template:
|
|
src: pg_hba.conf.j2
|
|
dest: "{{ pg_cluster_path }}/pg_hba.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0600"
|
|
|
|
# --- Start cluster ---
|
|
- name: Start PostgreSQL cluster
|
|
shell: "pg_ctlcluster {{ pg_version }} {{ pg_cluster }} start"
|
|
ignore_errors: true
|
|
|
|
# --- Wait for socket to be ready ---
|
|
- name: Wait for PostgreSQL socket
|
|
wait_for:
|
|
path: "/var/run/postgresql/{{ pg_version }}-{{ pg_cluster }}/.s.PGSQL.5432"
|
|
timeout: 60
|
|
|
|
# --- Install Python PostgreSQL libraries ---
|
|
- name: Install python postgres libraries
|
|
apt:
|
|
name:
|
|
- python3-psycopg2
|
|
state: present
|
|
update_cache: yes
|