164 lines
5.6 KiB
YAML
164 lines
5.6 KiB
YAML
---
|
|
# RHEL/CentOS only. Set a repository to use for PostgreSQL installation.
|
|
postgresql_enablerepo: ""
|
|
|
|
# Set postgresql state when configuration changes are made. Recommended values:
|
|
# `restarted` or `reloaded`
|
|
postgresql_restarted_state: restarted
|
|
|
|
postgresql_python_library: python-psycopg2
|
|
postgresql_user: postgres
|
|
postgresql_group: postgres
|
|
|
|
# `md5` or `scram-sha-256` (https://www.postgresql.org/docs/10/auth-methods.html)
|
|
postgresql_auth_method: "{{ ansible_fips | ternary('scram-sha-256', 'md5') }}"
|
|
|
|
postgresql_unix_socket_directories:
|
|
- /var/run/postgresql
|
|
|
|
postgresql_service_state: started
|
|
postgresql_service_enabled: true
|
|
|
|
# Global configuration options that will be set in postgresql.conf.
|
|
postgresql_global_config_options:
|
|
- option: unix_socket_directories
|
|
value: '{{ postgresql_unix_socket_directories | join(",") }}'
|
|
- option: log_directory
|
|
value: log
|
|
|
|
# Enabe timesaledb
|
|
timescaledb_enabled: false
|
|
|
|
# Host based authentication (hba) entries to be added to the pg_hba.conf. This
|
|
# variable's defaults reflect the defaults that come with a fresh installation.
|
|
postgresql_hba_entries:
|
|
- type: local
|
|
database: all
|
|
user: postgres
|
|
auth_method: peer
|
|
- type: local
|
|
database: all
|
|
user: all
|
|
auth_method: peer
|
|
- type: host
|
|
database: all
|
|
user: all
|
|
address: 127.0.0.1/32
|
|
auth_method: "{{ postgresql_auth_method }}"
|
|
- type: host
|
|
database: all
|
|
user: all
|
|
address: ::1/128
|
|
auth_method: "{{ postgresql_auth_method }}"
|
|
|
|
# Debian only. Used to generate the locales used by PostgreSQL databases.
|
|
postgresql_locales:
|
|
- en_US.UTF-8
|
|
|
|
# Databases to ensure exist.
|
|
postgresql_databases: []
|
|
# - name: exampledb # required; the rest are optional
|
|
# lc_collate: # defaults to 'en_US.UTF-8'
|
|
# lc_ctype: # defaults to 'en_US.UTF-8'
|
|
# encoding: # defaults to 'UTF-8'
|
|
# template: # defaults to 'template0'
|
|
# login_host: # defaults to 'localhost'
|
|
# login_password: # defaults to not set
|
|
# login_user: # defaults to '{{ postgresql_user }}'
|
|
# login_unix_socket: # defaults to 1st of postgresql_unix_socket_directories
|
|
# port: # defaults to not set
|
|
# owner: # defaults to postgresql_user
|
|
# state: # defaults to 'present'
|
|
|
|
# Users to ensure exist.
|
|
postgresql_users: []
|
|
# - name: jdoe #required; the rest are optional
|
|
# password: # defaults to not set
|
|
# encrypted: # defaults to not set
|
|
# role_attr_flags: # defaults to not set
|
|
# db: # defaults to not set
|
|
# login_host: # defaults to 'localhost'
|
|
# login_password: # defaults to not set
|
|
# login_user: # defaults to '{{ postgresql_user }}'
|
|
# login_unix_socket: # defaults to 1st of postgresql_unix_socket_directories
|
|
# port: # defaults to not set
|
|
# state: # defaults to 'present'
|
|
|
|
# Privileges to configure
|
|
# see
|
|
# https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_privs_module.html#ansible-collections-community-postgresql-postgresql-privs-module
|
|
postgresql_privs: []
|
|
# - db: exampledb # database (required)
|
|
# roles: jdoe # role(s) the privs apply to (required)
|
|
# privs: # comma separated list of privileges - defaults to not set
|
|
# type: # type of database object to set privileges on - defaults to not set
|
|
# objs: # list of database objects to set privileges on - defaults to not set
|
|
# schema: # defaults to not set
|
|
# session_role: # defaults to not set
|
|
# fail_on_role: # defaults to true
|
|
# grant_option: # defaults to not set
|
|
# target_roles: # defaults to not set
|
|
# login_host: # defaults to 'localhost'
|
|
# login_password: # defaults to not set
|
|
# login_user: # defaults to '{{ postgresql_user }}'
|
|
# login_unix_socket: # defaults to 1st of postgresql_unix_socket_directories
|
|
# port: # defaults to not set
|
|
# state: # defaults to 'present'
|
|
|
|
# Whether to output user data when managing users.
|
|
postgres_users_no_log: true
|
|
|
|
# Useful hints:
|
|
# To start replication
|
|
# Create replication user on master
|
|
|
|
# Dont forget to add rep_user to pg_hba.conf
|
|
# TYPE DATABASE USER ADDRESS METHOD
|
|
# host all rep_user 10.203.0.0/16 scram-sha-256
|
|
|
|
# On PostgreSQL:
|
|
# CREATE ROLE rep_user WITH REPLICATION LOGIN PASSWORD 'superstrongpass123';
|
|
# GRANT CONNECT ON DATABASE <db_name> TO rep_user;
|
|
# GRANT USAGE ON SCHEMA public TO rep_user;
|
|
# GRANT SELECT ON ALL TABLES IN SCHEMA public TO rep_user;
|
|
|
|
# DO $$
|
|
# DECLARE
|
|
# tables_list text;
|
|
# BEGIN
|
|
# SELECT string_agg(quote_ident(schemaname) || '.' || quote_ident(tablename), ', ')
|
|
# INTO tables_list
|
|
# FROM pg_tables
|
|
# WHERE schemaname = 'public'
|
|
# AND tablename NOT IN ('null' ); -- Список исключаемых таблиц
|
|
# IF tables_list IS NOT NULL THEN
|
|
# EXECUTE 'CREATE PUBLICATION export_tables FOR TABLE ' || tables_list;
|
|
# ELSE
|
|
# RAISE NOTICE 'Нет таблиц для добавления в публикацию';
|
|
# END IF;
|
|
# END $$;
|
|
|
|
# Migrate db schema to file
|
|
# sudo -u postgres pg_dump -s -d zabbix > schema_dump.sql
|
|
# Upload schema_dump.sql to secondary server
|
|
# CREATE DATABASE db_name;
|
|
# Put schema_dump.sql on it
|
|
# cat schema_dump.sql | sudo -u postgres psql db_name
|
|
|
|
# Create subscription on secondary server
|
|
# CREATE SUBSCRIPTION my_import CONNECTION 'host=[hostname] user=rep_user dbname=[db] password=superstrongpass123' PUBLICATION export_tables;
|
|
#
|
|
# -- Check pgsql replication status
|
|
# SELECT
|
|
# srrelid::regclass AS table_name,
|
|
# srsubstate AS state_code,
|
|
# CASE srsubstate
|
|
# WHEN 'i' THEN 'initialize'
|
|
# WHEN 'd' THEN 'data copy'
|
|
# WHEN 'f' THEN 'finished copy'
|
|
# WHEN 's' THEN 'synchronized'
|
|
# WHEN 'r' THEN 'ready (streaming)'
|
|
# END AS state_description,
|
|
# srsublsn AS lsn
|
|
# FROM pg_subscription_rel;
|