Ansible role for deploying High Availability PostgreSQL
Go to file
Jakub Sokołowski 90fe472bcb
backup: fix path of backup.sh script for timer
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-24 16:56:22 +01:00
defaults consul: add health.sh to check replica status 2023-11-22 13:15:45 +01:00
meta meta: add missing infra roles to dependencies 2023-11-23 12:50:00 +01:00
tasks backup: fix path of backup.sh script for timer 2023-11-24 16:56:22 +01:00
templates consul: add handling DB without replica to health.sh 2023-11-23 13:11:22 +01:00
README.md databases: use initdb folder to create DBs and users 2023-11-21 16:14:28 +01:00

README.md

Description

This role configures a High-Availability PostgreSQL Database with replication from master to slaves.

Configuration

To run just one instance without actual High-Availability use:

postgres_ha_db_name: 'example-db'
postgres_ha_admin_user: 'admin'
postgres_ha_admin_pass: 'super-secret-password'

For replicaton other settings

postgres_ha_is_master: '{{ hostname == "node-01.example.org" }}'
postgres_ha_replica_host: 'node-01.example.org'
postgres_ha_replica_port: 5043
postgres_ha_replica_allowed_addresses: ['11.12.13.15']

You can create additional databases using:

# Databases to init
postgres_ha_databases:
  - name: my-db
    user: my-user
    pass: my-pass

  - name: my-other-db
    user: my-other-user
    pass: my-other-pass

The user field is optional. DB name is used by default.

⚠️ WARNING: This only takes effect at database creation.

Backup settings can be adjusted using:

postgres_ha_backup: false
postgres_ha_backup_frequency: 'weekly'
postgres_ha_backup_timeout: 1200

Management

The service is managed using Docker Compose:

admin@node-01.example.org:/docker/postgres-ha % docker-compose ps
   Name                 Command                 State                    Ports
--------------------------------------------------------------------------------------------
postgres-ha   docker-entrypoint.sh -p 5433   Up (healthy)   5432/tcp, 0.0.0.0:5433->5433/tcp