112 lines
2.8 KiB
YAML
112 lines
2.8 KiB
YAML
---
|
|
# Instalacja PostgreSQL (najnowsza wersja) i konfiguracja klastra
|
|
# Role: primary i replica
|
|
|
|
- name: Install PostgreSQL and contrib packages
|
|
apt:
|
|
name:
|
|
- postgresql
|
|
- postgresql-contrib
|
|
- python3-psycopg2
|
|
update_cache: yes
|
|
state: present
|
|
|
|
# --- Auto-detect PostgreSQL version ---
|
|
- name: Detect installed PostgreSQL version
|
|
shell: "ls -d /etc/postgresql/*/ | head -1 | xargs basename"
|
|
register: pg_version_detect
|
|
changed_when: false
|
|
failed_when: pg_version_detect.rc != 0
|
|
|
|
- name: Set PostgreSQL version variable
|
|
set_fact:
|
|
pg_version: "{{ pg_version_detect.stdout | trim }}"
|
|
pg_cluster: "main"
|
|
pg_data: "/var/lib/postgresql/{{ pg_version_detect.stdout | trim }}/main"
|
|
pg_config_path: "/etc/postgresql/{{ pg_version_detect.stdout | trim }}/main"
|
|
pg_bin_path: "/usr/lib/postgresql/{{ pg_version_detect.stdout | trim }}/bin"
|
|
|
|
- name: Display detected PostgreSQL version
|
|
debug:
|
|
msg: "PostgreSQL {{ pg_version }} detected. Data path: {{ pg_data }}"
|
|
|
|
# --- Tworzenie logów PostgreSQL ---
|
|
- name: Ensure log directory exists
|
|
file:
|
|
path: /var/log/postgresql
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0755"
|
|
|
|
# --- Inicjalizacja klastra ---
|
|
- name: Check if cluster data directory exists
|
|
stat:
|
|
path: "{{ pg_data }}"
|
|
register: pg_data_stat
|
|
|
|
- name: Create cluster data directory if not exists
|
|
file:
|
|
path: "{{ pg_data }}"
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0700"
|
|
when: not pg_data_stat.stat.exists
|
|
|
|
- name: Initialize PostgreSQL cluster
|
|
shell: "{{ pg_bin_path }}/initdb -D {{ pg_data }} --encoding=UTF8 --locale=en_US.UTF-8"
|
|
become: true
|
|
become_user: postgres
|
|
when: not pg_data_stat.stat.exists
|
|
register: initdb_result
|
|
|
|
- name: Create config directory for cluster
|
|
file:
|
|
path: "{{ pg_config_path }}"
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0755"
|
|
|
|
# --- Konfiguracja PostgreSQL ---
|
|
- name: Deploy postgresql.conf
|
|
template:
|
|
src: postgresql.conf.j2
|
|
dest: "{{ pg_config_path }}/postgresql.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0600"
|
|
notify: restart postgresql
|
|
|
|
- name: Deploy pg_hba.conf
|
|
template:
|
|
src: pg_hba.conf.j2
|
|
dest: "{{ pg_config_path }}/pg_hba.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: "0600"
|
|
notify: restart postgresql
|
|
|
|
# --- Uruchomienie PostgreSQL ---
|
|
- name: Enable and start PostgreSQL service
|
|
systemd:
|
|
name: postgresql
|
|
enabled: yes
|
|
state: started
|
|
daemon_reload: yes
|
|
|
|
# --- Czekanie na socket ---
|
|
- name: Wait for PostgreSQL socket to be ready
|
|
wait_for:
|
|
path: "/var/run/postgresql/.s.PGSQL.5432"
|
|
timeout: 60
|
|
state: present
|
|
|
|
# Handlery
|
|
- name: restart postgresql
|
|
systemd:
|
|
name: postgresql
|
|
state: restarted
|
|
listen: "restart postgresql"
|