feat: Configure replication from postgres collection

This commit is contained in:
Oleksandr Stepanov
2024-11-20 16:37:33 +01:00
parent 10ea272736
commit dac0b0cc80
5 changed files with 43 additions and 2 deletions

View File

@ -59,6 +59,9 @@ postgres_arguments:
enable_postgres_replication: false
# IP address of the interface replication
postgres_replications_arguments: []
postgres_replica_user_name: ""
postgres_replica_user_password: ""
postgres_replica_auth_method: "scram-sha-256"
postgres_replication_bind_address: ""
postgres_replica_address: ""

View File

@ -9,3 +9,7 @@
- name: Prepare configs
ansible.builtin.include_tasks: provision.yml
- name: Configure replication on main instance
ansible.builtin.include_tasks: replication.yml
when: enable_postgres_replication

View File

@ -46,6 +46,8 @@
- postgres_replication_bind_address
- postgres_replica_address
- postgres_replications_arguments
- postgres_replica_user_name
- postgres_replica_user_password
- name: Check required en vars empty
ansible.builtin.fail:

34
tasks/replication.yml Normal file
View File

@ -0,0 +1,34 @@
---
- name: Grant user replication from network 192.168.0.100/24 access for replication with client cert authentication
community.postgresql.postgresql_pg_hba:
dest: {{ storage_directory }}/postgres/pg_hba.conf
contype: host
users: replication
source: {{ postgres_replica_address }}/32
databases: replication
method: {{ postgres_replica_auth_method }}
- name: Create postgres replication user
community.postgresql.postgresql_user:
login_host: {{ postgres_replication_bind_address }}
login_user: {{ database_username }}
login_user: {{ database_username }}
name: {{ postgres_replica_user_name }}
password: {{ postgres_replica_user_password }}
priv: "REPLICATION"
- name: Create replication slot if doesn't exist
become_user: postgres
community.postgresql.postgresql_slot:
login_host: {{ postgres_replication_bind_address }}
login_user: {{ database_username }}
login_user: {{ database_username }}
slot_name: replica
- name: Reload postgres select query to acme db
community.postgresql.postgresql_query:
login_host: {{ postgres_replication_bind_address }}
login_user: {{ database_username }}
login_user: {{ database_username }}
query: "SELECT pg_reload_conf()"

View File

@ -44,8 +44,6 @@ services:
env_file:
- postgres.env
{% if enable_postgres_replication %}
environment:
POSTGRES_HOST_AUTH_METHOD: "host replication replicator {{ postgres_replica_address }}/32 md5"
ports:
- "{{ postgres_replication_bind_address }}:5432:5432"
{% endif %}