Releases: vitabaks/postgresql_cluster
Release 2.0 (Clouds and UI)
We are excited to announce the release of version 2.0 🎉 , a major update that brings significant new features to the postgresql_cluster
project:
- This release introduces the capability to deploy PostgreSQL clusters across various cloud providers, including AWS, GCP, Azure, DigitalOcean, and Hetzner Cloud.
- Additionally, we’ve developed a User Interface (UI) - PostgreSQL Cluster Console, designed to streamline the deployment process, making it easier than ever to set up your clusters.
With this release, postgresql_cluster
will automatically configure the following:
- A virtual machine (with a dedicated data disk), with all cluster components installed and configured.
- A cloud load balancer to serve as the entry point for database connections.
- A storage bucket, and configured backups using pgBackRest.
🙏 A special thanks to @gslabs-dev for his contribution, @Rainbrand for developing the UI, and @ngurban for the API development.
✨Inspiration: We drew inspiration from the designs of Google Cloud Console, Aiven for PostgreSQL, and Postgres.AI, which greatly influenced our approach.
🔭 Looking ahead, we are planning to enhance the PostgreSQL Cluster Console with features that will enable you to manage your PostgreSQL clusters directly through the UI. If you’re interested in supporting the continued development of this feature, please consider becoming a sponsor.
New features
- Provision of resources in a popular cloud providers for PostgreSQL cluster deployment by @vitabaks in #464
- PostgreSQL Cluster Console (UI/API) by @gslabs-dev in #667
- Docker image '
vitabaks/postgresql_cluster
'- includes repository code, ansible, and all necessary dependencies.
- New roles:
authorized-keys
- These SSH public keys will be added to the server's ~/.ssh/authorized_keys file.
- variable:
ssh_public_keys
(optional, default '')
mount
- Configure mount points in
/etc/fstab
and mount the file system - variables:
mount
(optional, default ''),pg_data_mount_path
(default '/pgdata'),pg_data_mount_fstype
(default 'ext4') - Note: an empty disk will be automatically detected for cloud providers.
- ZFS pool will be created if '
zfs
' specified in themount.fstype
variable.
- Configure mount points in
- Automatically generate passwords (if not defined) for:
patroni_superuser_password
,patroni_replication_password
,patroni_restapi_password
,pgbouncer_auth_password
. - install
perf
,FlameGraph
and postgres dbgsym/debuginfo packages- variable
install_perf
, default 'false'
- variable
- Extension Auto-Setup
- This feature simplifies the integration and configuration process for PostgreSQL third-party extensions. This automated approach eliminates the need for manual configuration, allowing users to seamlessly integrate PostgreSQL extensions. To activate the "Extension Auto-Setup", specify the
enable_<extension_name>=true
variable. - List of extensions: timescaledb, citus, pg_repack, pg_cron, pgaudit, pgvector, postgis, pgrouting, pg_stat_kcache, pg_wait_sampling, pg_partman
- This feature simplifies the integration and configuration process for PostgreSQL third-party extensions. This automated approach eliminates the need for manual configuration, allowing users to seamlessly integrate PostgreSQL extensions. To activate the "Extension Auto-Setup", specify the
- Add the ability to execute pre and post-deploy command
- Variables:
pre_deploy_command
,post_deploy_command
- This can be a direct command, a bash script content, or a path to a script on the host.
- Variables:
Other changes
- Support Ubuntu 24.04; Install Patroni via deb/rpm package by @vitabaks in #642
- Update WAL-G to v3.0.3 by @vitabaks in #725
- Remove support for RHEL 7, Debian 10 and Ubuntu 20.04 by @vitabaks in #729
- Added default
ansible_python_interpreter
; Compatibility with Ansible 10 by @tk-nguyen in #730 - Using deb822_repository module instead of apt_key and apt_repository by @FactorT in #591
- Remove extra quotes from log_line_prefix by @vitabaks in #733
New Contributors
- @tk-nguyen made their first contribution in #730
- @Rainbrand (UI)
- @ngurban (API)
Full Changelog: 1.11.0...2.0.0
Release 1.11.0
New features
Enhancements
- Add more tls config values to pgbouncer.ini by @FabianHardt in #633
- Make keepalived role more configurable (issue #683) by @abyss-ms in #684
- update_pgcluster.yml: Update pgBackRest package on the backup server by @vitabaks in #648
- pgBackRest: Add '--no-online' option to stanza-create by @vitabaks in #695
- pgBackRest: Ensure directories exist with correct permissions by @vitabaks in #704
- Add basic security for Patroni REST API by @rcknr in #647
- confd: haproxy: optional log-format by @jimnydev in #687
Fixes
- Not ansible_check_mode for import ssh_keys by @SDV109 in #650
- Syntax problem with cron wal-g command by @garry-t in #658
- Add wal_g_path variable; fix "wal-g: not found" (issue 658) by @rrrru in #679
- Fix (Upgrade): Delegate maintenance mode tasks to 'balancers' group by @vitabaks in #699
- Fix (Upgrade): Update pg-path in local pgbackrest.conf by @vitabaks in #700
- WAL-G: Specify the '--config' option by @vitabaks in #703
- ssh-keys: Fix the typo in the condition by @vitabaks in #706
- Fix issue with jija2 template interpolation by @garry-t in #719
Other
- Set variable "ansible_python_interpreter" if not defined by @vitabaks in #635
- Add retry for pgbouncer restart handler by @FabianHardt in #638
- Replacing restart pgbouncer with reload pgbouncer by @SDV109 in #673
- Update vip-manager to v2.6.0 by @vitabaks in #639 #688 #708
- Update WAL-G to v3.0.2 by @vitabaks in #693
- Update Patroni to v3.3.2 by @vitabaks in #694
- Update etcd to v3.5.15 by @vitabaks in #709
- Remove CentOS Stream 8 support (EOL) by @vitabaks in #674
Tests
New Contributors
- @FabianHardt made their first contribution in #633
- @rcknr made their first contribution in #647
- @garry-t made their first contribution in #658
- @abyss-ms made their first contribution in #684
Full Changelog: 1.10.0...1.11.0
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)