From 08704c982402d7b157be2103b90138c123dcdea2 Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Fri, 20 Mar 2026 13:45:58 +0100 Subject: [PATCH] Fix PostgreSQL replication: add pg_hba.conf entries for replicator user - Create init-master.sh that runs SQL and appends replication rules to pg_hba.conf - Switch docker-compose-prod template from init-master.sql to init-master.sh - Fixes "no pg_hba.conf entry for replication connection" error Co-Authored-By: Claude Opus 4.6 (1M context) --- ansible/docker-compose-prod.yml.j2 | 2 +- docker/pgsql/init-master.sh | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 docker/pgsql/init-master.sh diff --git a/ansible/docker-compose-prod.yml.j2 b/ansible/docker-compose-prod.yml.j2 index 342ee8a..1ab0991 100644 --- a/ansible/docker-compose-prod.yml.j2 +++ b/ansible/docker-compose-prod.yml.j2 @@ -37,7 +37,7 @@ services: - hot_standby=on volumes: - db-master-data:/var/lib/postgresql/data - - ./docker/pgsql/init-master.sql:/docker-entrypoint-initdb.d/init-master.sql + - ./docker/pgsql/init-master.sh:/docker-entrypoint-initdb.d/init-master.sh healthcheck: test: ["CMD-SHELL", "pg_isready -U e-ticket -d e-ticket"] interval: 5s diff --git a/docker/pgsql/init-master.sh b/docker/pgsql/init-master.sh new file mode 100755 index 0000000..1d9e0a8 --- /dev/null +++ b/docker/pgsql/init-master.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'e-ticket'; + SELECT pg_create_physical_replication_slot('slave_slot'); +EOSQL + +echo "host replication replicator 0.0.0.0/0 md5" >> "$PGDATA/pg_hba.conf" +echo "host all all 0.0.0.0/0 md5" >> "$PGDATA/pg_hba.conf" + +pg_ctl reload -D "$PGDATA"