Files
PostgreSQL-Ansible/roles/postgres/tasks/main.yml
2026-01-29 14:15:57 +01:00

70 lines
1.9 KiB
YAML

- name: Install PostgreSQL packages
apt:
name:
- postgresql
- postgresql-contrib
update_cache: yes
# --- Dynamiczne wykrywanie wersji PostgreSQL ---
- name: Detect PostgreSQL clusters
shell: "pg_lsclusters --no-header | awk '{print $1, $2}' | head -n1"
register: pg_cluster_info
changed_when: false
- name: Set PostgreSQL version and cluster facts
set_fact:
pg_version: "{{ pg_cluster_info.stdout.split()[0] }}"
pg_cluster: "{{ pg_cluster_info.stdout.split()[1] }}"
- 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
# --- Configure PostgreSQL ---
- name: postgresql.conf
template:
src: postgresql.conf.j2
dest: "{{ pg_cluster_path }}/postgresql.conf"
- name: pg_hba.conf
template:
src: pg_hba.conf.j2
dest: "{{ pg_cluster_path }}/pg_hba.conf"
# --- Ensure cluster exists and started ---
- name: Ensure PostgreSQL cluster exists
shell: |
if [ ! -d "{{ pg_data_path }}" ]; then
pg_createcluster {{ pg_version }} {{ pg_cluster }} --start
else
pg_ctlcluster {{ pg_version }} {{ pg_cluster }} start
fi
# --- 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