Releases: vitabaks/postgresql_cluster
Release 1.10.0
New features
- Enhanced Multi-Data Center Traffic Management
- Added capabilities for dynamic configuration of Patroni REST API endpoints with custom tags like
datacenter=<name>
, enabling optimized local load balancing and improved read efficiency across geographically distributed Postgres clusters.
- Added capabilities for dynamic configuration of Patroni REST API endpoints with custom tags like
Enhancements
- Adds variables to enable client tls on pgbouncer by @n-borges in #585
update_pgcluster.yml
improvementspg_upgrade.yml
improvements- Analyze a PostgreSQL database (optimizer statistics) immediately after the upgrade by @vitabaks in #601
- Monitor and terminate the long-running transactions during statistics collection by @vitabaks in #601
- optional, variable:
vacuumdb_analyze_terminate_threshold
- optional, variable:
- Upgrade and rollback Improvements by @vitabaks in #608
- Patroni: Add permanent replication slots by @vitabaks in #614
- Variable:
patroni_slots
(by default, the value is not defined)
- Variable:
- Add
patroni_restapi_listen_addr
andpostgresql_listen_addr
variables by @vitabaks in #598
Fixes
update_pgcluster.yml
pg_upgrade.yml
Other
- Python 3.11 use on RedHat 8 and above by @weisscorp in #573
- Update ansible dependencies and fix lister's warnings by @vitabaks in #579
- Replace the pg_ctlcluster command with pg_ctl and increase the timeout by @vitabaks in #590
- pgbackrest : Add pg1-socket-path option by @vitabaks in #606
ansible_python_interpreter
: Use Python 3 (by default) by @vitabaks in #624- Update the tasks to check the availability of the VIP address by @vitabaks in #623
- Update Patroni to v3.3.0 by @vitabaks in #621
- Update WAL-G to v3.0.0 by @vitabaks in #629
Tests
New Contributors
- @weisscorp made their first contribution in #573
- @n-borges made their first contribution in #585
Full Changelog: 1.9.0...1.10.0
Release 1.9.0
New features
- Support for multiple PgBouncer processes (using
so_reuseport
) by @vitabaks in #487- PgBouncer is single-threaded and uses one CPU core per instance, this option is a way to get PgBouncer to use multiple CPU cores. Variable:
pgbouncer_processes
(default: 1)
- PgBouncer is single-threaded and uses one CPU core per instance, this option is a way to get PgBouncer to use multiple CPU cores. Variable:
- Add
patroni_maximum_lag_on_replica
variable by @vitabaks in #569 #570- The implementation involves appending an optional
?lag=<max-lag>
parameter to the health check forreplica
andasync
endpoints. By doing so, it enables excluding those replicas from load balancing whose lag exceeds the specified maximum, as determined by thepatroni_maximum_lag_on_replica
setting (default: "100MB").
- The implementation involves appending an optional
Enhancements
- etcd: Add the Auto Compaction option for maintenance etcd by @SDV109 in #562
- PgBouncer: Add
max_prepared_statements
option by @vitabaks in #497 - PgBouncer: Connect via Unix socket instead of TCP/IP to improve performance by @vitabaks in #498
- PgBouncer: Сreate the '
user_search
' function in pgbouncer_auth_dbname only by @SDV109 in #568 - PgBackRest: Enable asynchronous WAL archiving by @vitabaks in #515
- PgBackRest: automate backup-standby setup by @vitabaks in #538
- pg_upgrade.yml: Add
pgbackrest_stanza_upgrade
variable by @vitabaks in #541 - pg_upgrade.yml: Provide support for upgrading to PostgreSQL 16 by @vitabaks in #472
- update_pgcluster.yml: Reboot node if it's required, e.g. kernel or security updates by @chuegel in #510
Fixes
- WAL-G: fix command for task "Check the latest available Go version" and install make package by @vitabaks in #446
- Fix: Compatibility with custom patroni_superuser_username by @vitabaks in #462
- Fix: Do not use a proxy when accessing the Patroni API by @vitabaks in #465
- Change to avoid the error "AnsibleUndefinedVariable: 'ansible_hostname'" by @TommasoDb in #483
- Fix patroni.yml: Remove extra '+' from 'endfor' in etcd3.hosts by @vitabaks in #490
- PgBouncer: drop
-q
option from call by @jimnydev in #491 - PgBouncer: Fix "local" pg_hba rule by @vitabaks in #508
- Fix: perform tasks of the "copy" role with root privilege by @vitabaks in #525
- Fix add_pgnode.yml: Clear the data directory for the new node for bootstrapping by @vitabaks in #527
- Fix: Set the dependency versions for the "yedit" module. by @vitabaks in #529
- Fix: Skip creating DB users and functions in Standby Cluster leader by @vitabaks in #533
- upgrade: Fix PgBouncer socket dir permissions on RHEL by @vitabaks in #534
- upgrade: Ensure correct permissions for PgBouncer unix socket directory by @vitabaks in #544
- Import AlmaLinux repository GPG key by @vitabaks in #557 #566
- Disable 'pgdg' repo during system packages installation (RHEL) by @vitabaks in #561
- add-repository: Do not delete the 'epel-release' package if it is installed (RHEL) by @vitabaks in #567
- Consul: Add a nameserver entry poining to localhost for dnsmasq by @vitabaks in #571
Other
- HAProxy: enable direct connections apart from pgbouncer ones (#548) by @jimnydev in #549
- issues 449,448 remove_cluster.yml improvements by @rrrru in #450
- PgBouncer: Ensure pgbouncer service is enabled by @vitabaks in #454
- PgBouncer: Install the latest version of the pgbouncer package by @vitabaks in #461
- PgBouncer: Use the RuntimeDirectory option in the systemd unit file. by @vitabaks in #506
- config_pgcluster.yml: Add compatibility with check mode by @vitabaks in #459
- PgBackRest: do not perform the role of ssh_keys in check mode by @vitabaks in #466
- PgBackRest: Create a unique cron file name by @vitabaks in #468
- vip-manager: do not install in check mode by @vitabaks in #467
- etcd: compatibility with check mode by @vitabaks in #470
- etcd: Parameters for patroni etcd username, password and namespace by @lavr in #473
- confd: requires an additional 'basic_auth' flag for etcd authorization by @lavr in #475
- pgpass: do not output the contents to the log by @vitabaks in #469
- Add PIP_BREAK_SYSTEM_PACKAGES to the pip module by @vitabaks in #486
- Add "keepalived_virtual_router_id" variable by @vitabaks in #513
- Do not use a proxy when accessing the Patroni API by @vitabaks in #521
- add_pgnode.yml: Fix the list of hosts to configure pgbackrest by @vitabaks in #517
- pg_upgrade: Use 50% CPU cores for vacuumdb (analyze) by @vitabaks in #523
- Optimize PostgreSQL parameters for SSD storage by @vitabaks in #536
- Describe "Changing PostgreSQL configuration parameters" by @vitabaks in #556
- Specify Patroni version (don't use 'latest' by default) by @vitabaks in #474
- PostgreSQL 16 (by default) by @vitabaks in #526
- Update Patroni to v3.2.0 by @vitabaks in #492
- Update ETCD to v3.5.11 by @vitabaks in #545
- Update Consul to v1.15.8 by @vitabaks in #546
- Update Patroni to v3.2.2 by @vitabaks in #554
- Update vip-manager to v2.3.0 by @vitabaks in #565
- Remove compatibility with Ubuntu 18.04 by @vitabaks in #495
Tests
- Molecule: Add config_pgcluster.yml and update_pgcluster.yml playbooks to tests by @vitabaks in #478
- Molecule: exclude ubuntu 18.04 from pg_upgrade tests by @vitabaks in #479
- Add the Molecule tests for the Type C schema (Consul) by @vitabaks in #511
New Contributors
- @rrrru made their first contribution in #450
- @lavr made their first contribution in #473
- @ScarletBlizzard made their first contribution in #480
- @TommasoDb made their first contribution in #483
- @SDV109 made their first contribution in #562
Full Changelog: 1.8.0...1.9.0
Release 1.8.0
New features
- Automate updates for PostgreSQL HA Cluster (#281)
update_pgcluster.yml
playbook is designed to update the PostgreSQL HA Cluster to a new minor version (postgresql, patroni, or the system)- More details can be found here
- Automate in place major upgrades for PostgreSQL (#301)
pg_upgrade.yml
playbook is designed for in-place major upgrades of PostgreSQL (e.g., from 14 to 15, etc)- Upgrade Plan and more details can be found here
- Simple cluster deployment with timescaledb (#335)
- to deploy a PostgreSQL HA Cluster with the TimescaleDB extension, you just need to specify only one variable
enable_timescale=true
- to deploy a PostgreSQL HA Cluster with the TimescaleDB extension, you just need to specify only one variable
- Added restart option in config_pgcluster.yml (by @artemsafiyulin in #354)
- Added pgbouncer authentication via
auth_user
andauth_query
(by @chuegel in #401, #409, #433) - Added the functionality of assigning roles to users (by @sgremyachikh in #439)
- New roles
Enhancements
- Automate the tuning of
shared_buffers
andeffective_cache_size
(b6be91f) - Added watchdog support by @tanganellilore in #250
- Added callbacks by @artemsafiyulin in #248
- Add PowerTools repository to install dependencies (a98ca02)
- Enable CodeReady Linux Builder (crb) repository (for RHEL 9) (0bea22f)
- Enable CodeReady Builder repository for Oracle Linux (7531a94)
- PITR: password reset for PostgreSQL users (b64d8b0)
- pgbackrest: stanza-create (392dc34, eb35ebc)
- pgbackrest: Add the ability to configure a dedicated pgBackRest server (#379)
- pgbackrest: Ensure 'repo1-host' and 'repo1-host-user' are set correctly (#399)
- Automate 'archive_command' configuration for pgBackRest and WAL-G (#394)
- Automate cron jobs configuration for WAL-G and minor fixes (#395)
- Update the etcd and vip-manager version (use API v3) (#274)
- Ability to configure connection limits by @mrsrvman in #280
- Several attempts to install apt and package by @FactorT in #285
- Improvements and simplification of the cluster scaling process (#290)
- pgbouncer: Add the pgbouncer_listen_addr variable (55b0e98)
- pgbouncer: Update pool size calculation algorithm (#362)
- custom_wal_dir: Refactoring custom WAL directory setup (#425)
- Refactor config_pgcluster.yml, add the leader identification and backup settings (#444)
Fixes
- PITR: clear data directory for replicas before restoring if patroni_create_replica_method does not contain pgbackrest (9313991)
- PITR: don't try to stop Postgres if "pg_ctl status" returned 4 (6a9934c)
- PITR: Remove patroni.dynamic.json file before start PostgreSQL for Recovery (476df01)
- pgbackrest: fix condition for task ssh_keys (48a7ecc)
- etcd: exclude performance tuning (nice/ionice) for containers (cc2bd54, 2483a71)
- exclude "Disable Transparent Huge Pages" for containers (775c80c)
- exclude role swap for containers (a6dd4df)
- Set permissions for the etcd directory by @mrsrvman in #268
- repaired pgbackrest (fix typo) by @wolacinio in #282
- vip-manager: fix task "Wait for the cluster ip address (VIP) is running" (e4a7524)
- fix: define all groups in the firewall_additional_rules_for variable (59b6100)
- firewall: prevent errors when there are host groups undefined in firewall_allowed_tcp_ports_for and firewall_additional_rules_for variables (db81ac6)
- sysctl: avoid errors when there are host groups undefined in sysctl_conf variable (0d9287f)
- Fix the condition for the "Create Dnsmasq configuration" task loop (0449e67)
- Fix: Disable privilege escalation for temp file deletion tasks (#421)
- Make sure that the cron package is installed (#426)
- Consul: Fix '_consul_lan_servers' variable to resolve 'hostvars[' ']' not defined' (#440)
Other
- config_pgcluster: add role "copy" (4895da2)
- consul: Make sure the python3-pip package are present on controlling host (12812fb)
- consul: Make sure the unzip package are present on the control host (f94da57)
- consul: Install netaddr dependency on the control host (#442)
- Describe the requirements for standby cluster (ca77724)
- Do not install pip using get-pip.py (581cf53)
- pg_probackup: Add repo for Centos and Oracle Linux (#263)
- remove_cluster: Delete PgBackRest cron by @mrsrvman in #264
- Deleting local files after copying from the master by @mrsrvman in #267
- Ability to install packages for patroni as a list by @mrsrvman in #269
- Added information about the system in ansible log (b0c7616)
- rename "etcd_ver" variable to "etcd_version" (afe2de9)
- remove_cluster: ignore the error if the patroni service is unavailable (7924d46)
- Add patroni_restapi_port variable (#279)
- pgbouncer: add query_wait_timeout parameter on pgbouncer.ini.j2 by @mbobrovskyi in #296
- remove_cluster: stop consul service if remove_consul is true by @bazzzsh in #300
- timezone: Make sure that the tzdata package is installed (6491595)
- replace the "UTC" timezone with "Etc/UTC" (58cd484)
- Increase track_activity_query_size to 4096 (3111db6)
- Configure tcp_keepalives settings for PostgreSQL (53edccd)
- Make inventory group 'balancers' optional in Ansible tasks (16c63c5)
- Patroni: Replace md5 with postgresql_password_encryption_algorithm in pg_hba.conf section (#398)
- Patroni: switch to Patroni REST API endpoint '/primary' (#400)
- Remove compatibility with Ansible versions older than 2.11.0 (#403)
- WAL-G: Perform weekly full backup and retain 4 full backups (cf84295)
- Do not install PowerTools repository and postgresql devel package by default (RedHat) (#443)
- Improving the codebase of roles and playbooks:
- Integrate code improvements and add linters by @ThomasSanson in #307 #315 #368 #370 #373 #371 #377 #417
- Add the Fully Qualified Collection Name (FQCN) to each Ansible task by @pa-decarvalho in #412
- Improve jinja spacing by @pa-decarvalho in #413
- Update etcd to version 3.5.9 (2d96cf6)
- Update Consul to version 1.14.7 (ca5a5fe)
- Debian 12 (Bookworm) support (#382)
Dev and Tests
- Add a CONTRIBUTING.md file and Makefile to guide new contributors by @ThomasSanson in #305 #378
- molecule: set ubuntu2204 by default (9e34a3e)
- Add .gitpod.yml and gitpod Dockerfile (https://github.com/vitabaks/postgresql_...
Release 1.7.0
New features
- Support Consul for distributed consensus (#238)
- New type of scheme: [Type C] PostgreSQL High-Availability with Consul Service Discovery (DNS)
- Added the ability to manage configuration parameters for a deployed Patroni cluster (#218 thanks @artemsafiyulin)
Enhancements
- Added the ability to install new versions of WAL-G. Update to version 2.0.1 (#226)
- Added compatibility with the Red Hat family version 9 (5eb45fc)
- Make sure that the total size of the pgbouncer pools does not exceed max_connections (#237, thanks @artemsafiyulin)
Fixes
- Fix yamllint warnings (e005628)
- Compatibility with python 3.6 for the task "install pip" (7c152f6)
- postgresql_parameters: fix log_filename parameter (#230)
- Role confd: fixe URL to the etcd cluster nodes (for dcs_exists: true) (#231)
- Role hostname: change hostname in /etc/hosts for localhost only (42840a2)
- Fix /etc/environment error for variable PATRONICTL_CONFIG_FILE (#242, thanks @anyuta1166)
- Fix typo in confd role (#243, thanks @anyuta1166)
- Pin setuptools package to version <66 (#244)
Other
- Update firewall_ports_dynamic_var, firewall_rules_dynamic_var (a6c7d40)
- packages: change state from latest to present (3c9429d)
- Added pipelining mode to Ansible configuration (20dad13)
- Remove the "warn: false" argument for the command module for compatibility with Ansible version 7 (b4e1c86).
- Update requirements.txt (switch to boto3 and add pysyncobj module) (f2f70f9)
- Add tag "install_packages" for the task of installing postgresql packages (af1dc80)
- pgbouncer: update the path to the pid file (4f1d890)
- haproxy: update the path to the pid file (cedd92b)
- Remove compatibility with Debian 9 Stretch (1e26921)
- PostgreSQL 15 (by default) (b71473c)
Tests
- Add .yamllint file (4ed1f6e)
- Update .ansible-lint (14a1927)
- Molecule: add cgroupns_mode to fix CI workflow (42b56fd)
- Molecule: remove CentOS 7 and Oracle Linux 7 from tests (844baf4)
- Add CentOS Stream 8 and 9, Rocky Linux 9, AlmaLinux 9, Oracle Linux 9 to tests (d9cdfc9, e731b19)
- Remove "curl" from the "system_packages" list to prevent failures in CI (9e91e4b)
Comparing changes: 1.6.1...1.7.0
Release 1.6.1
New features
- Automate database backup: create crontab for pgbackrest (#215 thanks @chlordk)
- Add PostgreSQL schemas. New variable:
postgresql_schemas
(#187 thanks @chlordk) - Add playbook
remove_cluster.yml
(#188, #189 thanks @chlordk)
Enhancements
- pgbouncer: new variable:
ignore_startup_parameters
(#163 thanks @jimnydev) - pgbouncer: new variables:
pgbouncer_admin_users
,pgbouncer_stats_users
(23565bd) - Restart Patroni service if it crashed (b56d504)
- Add compatibility with ubuntu 22.04 (44aeb5d)
Fixes
- Support different
patroni_superuser_username
(271a357, 83a2f3e) - Role postgresql-users: add "postgres" as the default database to connect (0752de8)
- Role sysctl: improve
sysctl_conf_dynamic_var
variable (issue #211, MR #214 thanks @linuxfreakus)
Other
- Gathering Facts from all servers, tags: always (6daa875)
- Do not configure firewall (iptables) by default (aee2562)
- Do not generate the locale "ru_RU" by default (09c9b6f)
- PostgreSQL: increase the
max_worker_processes
parameter (6027669) - PostgreSQL: add
auto_explain.sample_rate
parameter (584e807) - Comment out the "
net.netfilter.nf_conntrack_max
" kernel parameter (a911cb5) - Comment out the "
kernel.sched_migration_cost_ns
" kernel parameter (bf3fd84) - README: Index - Table Of Content (#190 thanks @chlordk)
- README: Make image path relative (#198 thanks @chlordk)
Tests
- Molecule: add tests on ubuntu 22.04 (b93386f)
- Update ansible-lint.yml (333249d, eeca5a5, f0b77e7, ea50633, c8ed863)
- Update molecule.yml (061d13d , e05b5da , b5ab216)
Comparing changes: 1.6.0...1.6.1
Release 1.6.0
New features
- Add support for the Patroni standby cluster. Variable
patroni_standby_cluster
(8b002d1) - Add role "netdata". Variables:
netdata_install
,netdata_install_options
,netdata_conf
(c176367, a8f1c76) - Add role "copy". Variables:
fetch_files_from_master
,copy_files_to_all_server
(#154) - Add role "swap". Variables:
swap_file_create
,swap_file_path
,swap_file_size_mb
(#160) - Add support Rocky Linux (e5f71a6, 8873479)
- add support AlmaLinux (thanks @jonathanspw) (#127)
- Add support pg_probackup for the Patroni cluster bootstrap and create replica (thanks @shipiguzev) (#134, d4506a1, 9724859)
Enhancements
- Enable
wal_compression
by default (thanks @NikolayS) (eba8fe7) - Haproxy: add
haproxy_listen_port
variables (7474ba3, 3a0a036, 443346a) - Compatibility with Debian 11 "bullseye" (88b4879)
- Update
postgresql_parameters
(64f39ee, 4ed515a) - Added the possibility to add options to PostgreSQL roles (thanks @sjstoelting) (#136)
- Changed PostgreSQL password encryption from
md5
toscram-sha-256
(thanks @sjstoelting) (#138, 7b86d03) - Add kernel parameter "
vm.overcommit_memory
" for postgres_cluster (62418e7) - Update etcd to v3.3.27 (3236037)
- Update vip-manager version to 1.0.2 (ea648eb)
- PostgreSQL 14 (by default) (62a0e7a)
Fixes
- Fix: "urllib3 (1.26.6) or chardet (3.0.4) doesn't match a supported version" (33cad15)
- Fix nf_conntrack_ipv4 modprobe for RHEL 8.3 and 8.4 (c899ed6)
- netdata: Enable PowerTools repository for RHEL 8 (dee14e5)
- Fix: HAProxy package version for Debian 11 (60c3d8c)
- Fix: server certificate verification failed for apt.postgresql.org (Debian 9) (f4ee06c)
- Disable the "master is the leader with the lock" check for standby leader (2eda7aa)
- Fix vip-manager URL for RedHat (thanks @nwaddon) (#159)
Other
- Update requirements (requests>=2.25.1) (5429441)
- Molecule: add namespace to meta/main.yml (0417a84)
- Move OS-specific variables to include_vars (e496a25)
- Add the "always" tag to include_vars (6acba3c)
- Update galaxy_info (meta/main.yml) (0058beb)
- Add Port requirements to README (a477dc6)
Tests
- Molecule: add Debian 11 "bullseye" (1684cfa)
- Molecule: add HAProxy installation tests (524663e, a50a3d6)
- Update molecule.yml and add almalinux8 (4491d09)
- Fix ansible-lint error (cannot import name 'render_group') (af0bdf6)
- Update .ansible-lint (9cace0c)
- Update workflow ansible-lint (479d318, 9b6498a)
Release 1.5.0
New features
- Custom WAL location ("
postgresql_wal_dir
" variable) (ac3850d) - Allow conversion of the basic primary-standby replication to the patroni cluster (1b5516e)
- Compatibility with Oracle Linux 7 and 8.
Enhancements
- Add "
disable_archive_command
" and "keep_patroni_dynamic_json
" variables (61bf839) - patroni: add log settings (4172977)
- wal-g (custom bootstrap): Wait for PostgreSQL Recovery to complete (WAL apply) (a374b8d)
- Allow execution of the "generate pg_hba.conf on Replica" task for RedHat-based systems, if the "postgresql_exists" variable is "true" (a7f683b)
- Allow to perform pg_hba tasks before executing the add_pgnode.yml playbook for cluster scaling:
ansible-playbook deploy_pgcluster.yml --tags pg_hba
(a7f683b) - Add "
haproxy_maxconn
" and "haproxy_timeout
" variables (1f0ac50, f190881) - add sysctl parameter "
net.ipv4.tcp_tw_reuse
" (5046b77) - Add
--wait
and--timeout
options for pg_ctl stop command (923c776) - Add Development repository for OracleLinux 7 (6463894)
- Reinstall
glibc-common
to avoid problem when generating locales (for OracleLinux 7) (5837ae4) - pgbackrest: install gnupg and apt-transport-https packages (323ab6e)
- etcd: set "
initial-selection-tick-advance=false
" (0f651c7) - etcd role: Make sure the unzip/tar packages are present (dd5ee62)
- etcd_ver: "v3.3.25" (dc49266)
- wal_g_ver: "v0.2.19" (1b37807)
- postgresql: 13 (by default) (7b301b9)
Fixes
- Don't generate pg_hba.conf on every PITR (3952a49)
- add extra_opts:
--no-same-owner
for unarchive module (f21316c) - Restrict standard local port range (9bfb151)
- fix issue with "is search" condition for ansible older then 2.9 (54ed666)
- do not generate pg_hba.conf on replica if postgresql_conf_dir=postgresql_data_dir (3128767)
- check that the /etc/locale.conf exists (2575ed1)
- Use
ansible_python_interpreter: /usr/bin/python3
for pip3 tasks (f14191a)
Other
- comment out the example nameservers (88337b4)
- ansible: disable deprecation_warnings (06fb7af)
- Update requirements.txt (ff3e01e)
- remove wal_e vars (f546561)
- Add meta/main.yml (c52b46c)
- Upgrade urllib3 to version 1.25.9 or later (e55d295)
Tests
- molecule: add nameservers to converge.yml (a581b49)
- Add molecule test for Oracle Linux 7 and 8 (e7af72a, df59d7e)
- Update ansible-lint.yml (support for multiple versions of ansible) (fb6574c, c768be6, 5aca26c, 6803bc9, 5e1dcea)
EOL
- Delete Ubuntu 16.04 from the list of supported OS (75afbc2)
Release 1.4.1
Enhancements
- Patroni: use .pgpass_patroni instead of the default ".pgpass" password file (353877b)
- Patroni: add pg_ident.conf support (d7f3536)
- Patroni: add synchronous_node_count variable (d1486ab)
- stats_temp_directory variables (3be08fc)
- Install the latest system packages (e6c8d9e)
- locales: set system locale (LANG,LC_ALL) (fc3c5f6)
- Use https only for external URL`s (a8ca372)
- Make sure the apt-transport-https package is present (deban/ubuntu) (6127827)
- vip-manager: version 1.0 (75022e9)
Fixes
- PITR (pgbackrest): fix ERROR unable to set ownership for patroni.dynamic.json (f81b200)
- Set owner to patroni conf directory (17f947a)
- fix task "Enable Software Collections (SCL) repository for RedHat 7" (769dc8a)
- fix "Failed to validate GPG signature" (d684b22)
- fix error "non-zero return code rc: 3" for task "check PostgreSQL is started" (1701264)
- vip-manager.service: add "After=network-online.target" (6cee7e5)
- patroni.service: fix "Not an absolute path, ignoring: ~" (280ecf0)
Other
- pgbackrest: disable pgbackrest bootstrap script (not used) (2656603)
- wal-g: disable wal_g bootstrap script (use no_params option) (af8d115)
- rename variable install_pgbouncer to pgbouncer_install (618d222)
- add example port to firewall_allowed_tcp_ports (c386e43)
- move role vip-manager-disable to vip-manager/disable (a9e27e6)
Tests
Release 1.4.0
New features
-
Added pgBackRest support (#40)
Create/Clone Patroni clusters from your existing backups with pgBackRest
With support of point-in-time recovery, PITR
See more details https://github.com/vitabaks/postgresql_cluster#restore-and-cloning -
Compatibility with Postgres Pro Standard (#38, #39)
all supported versions. Tested on centos, debian, ubuntu. -
New role: "resolv_conf". Adds entries of DNS server(s) into /etc/resolv.conf (4f3521b, cccbc53)
variablenameservers
(in vars/system.yml) -
New role "etc_hosts". Adds entries into /etc/hosts file for postgresql_cluster nodes (427f4e9).
variable:etc_hosts
(in vars/system.yml) -
Install Software Collections (SCL) repository for RHEL 7 (cc24028)
variableinstall_scl_repo: true
(in vars/RedHat.yml) -
Support for switch from scheme TypeB to TypeA (#43 thanks @jidckii )
variablevip_manager_disable
(in playbook balancers.yml)
Enhancements
- generate virtual_router_id based on the last octet of cluster_vip (802ff58).
- vip-manager: release VIP when vip-manager service is stopped. Use ExecStopPost=/sbin/ip addr del (0a673a7 thanks @jidckii ).
- vip-manager: new variables -
vip_manager_ip, vip_manager_mask, vip_manager_iface
(9fee9e7). - roles for etcd and balancers moved to separate playbooks. Added play-level condition (9d37642, 4657354)
- new variable
sysctl_set
(11861a5)
allows to disable the task of configuring kernel parameters. - clean yum cache before install packages for RHEL (6004598).
- wait for the patroni is healthy on the replica servers after starting the patroni service (284dc07, ce13be2).
- pgbouncer - generate userlist.txt from pg_shadow (596b25d).
- added minimal_ansible_version check (89812fa).
minimal_ansible_version: 2.7.0 - ansible-role-firewall: updated to version 2.5.0 (0df73e2).
- update etcd to version 3.3.23 (3c2a1ab).
- requirements.txt - added python modules "pexpect" and "ruamel.yaml". Required for PITR (c5e6604).
- PITR (custom bootstrap) - disable archive_command (e6edeaa).
Fixes
- sysctl: fix Jinja2 warning (50e1d4b).
- sysctl: make sure handlers are flushed immediately (8bc0db7).
- ntp: fix flush_handlers warning (94e56d1)
- pgbouncer: fix flush_handlers warning (0f4fbbe).
- etcd: make sure handlers are flushed immediately (1fd74af).
- patroni.yml.j2 - fixed yamllint warnings and errors (825d88b).
- ansible-role-firewall: fix error during deployment when execute tasks:
"Check if ufw package is installed (on Ubuntu)" (8cf7e30).
"Check if firewalld package is installed (on RHEL)"(7120f8d). - run playbook "balancers.yml" after the "hostname" role is played (46010aa).
- fix error with create extensions on PostgresPro (a20599c, 1daaea0).
Tests
- Added CI "Molecule" on GitHub Actions for etcd_cluster and postgres_cluster (#37).
tests of deploying a patroni cluster on distro: debian9/10, ubuntu1804/2004, centos7/8. - Daily scheduled cluster deploy tests with Molecule (7d3903c)
for each supported Linux distro. - Added Molecule test for PostgresPro (scheduled - weekly)
EOL
Debian 8 removed from the list of supported versions (end of life on June 30, 2020) (804b938).
Release 1.3.0
New features
-
Added WAL-G support (#32 thanks Anton Patsev @patsevanton )
Now you can deploy PostgreSQL high availability clusters as well as create replicas from wal-g backups.
If variablewal_g_install
istrue
, wal-g will be installed and the necessary parameters will be specified in the walg.json conf file in postgresql_home_dir, and patroni.yml will be prepared for using wal-g.
See the variables:
patroni_cluster_bootstrap_method
patroni_create_replica_methods
postgresql_restore_command
wal_g_install
,wal_g_ver
,wal_g_json
-
Added compatibility with Ubuntu 20.04 LTS (#35).
Enhancements
- VIP: make the cluster ip address as optional (176a36a, 6d9b0fc).
Now you can deploy your custom schemes without using a cluster IP address (VIP) if necessary. - postgresql: update to version 12 (by default) (a6a2ab0)
- etcd: update to version 3.3.19 (by default) (1ec3fff).
- etcd: added compatibility with etcd version 3.4.x (1b05ba5)
- haproxy: update to version 1.8.25 for haproxy_installation_method: "src" (a28d08e).
- pgbouncer: disable log_connections and log_disconnections (b5e29a3).
- pgbouncer: auto-recovery of crashed pgbouncer.service with systemd (3444c3f).
- pgbouncer: increase listen_backlog to 4096 (2545b54).
- sysctl: add net backlog kernel parameters (567ebda).
- Added "python-consul" module in requirements. For support the "Consul" DCS (6391cfb).
- Code Refactoring (#33, #34)
Fixes
- vip-manager: create a conf directory if it does not exist (7079672).
- specify "-U postgres" for the "get postgresql database list" task (ad5e21d).
- сheck if postgresql packages are installed for postgresql_exists: "true" (a226a20).
- remove python2 package (no more required for pgbouncer) for RHEL/CentOS 8 (62282eb).
- remove example ip address from cluster_vip (a36e4dd).
- fixed yamllint and ansible-lint warnings/errors.
Tests
- Added ansible-lint and yamllint GitHub Actions workflow for linting playbooks.