Skip to content

Releases: vitabaks/postgresql_cluster

Release 1.10.0

16 Apr 15:00
8e7151c
Compare
Choose a tag to compare

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.
      • Add the ability to set Patroni tags (including custom tags) by @vitabaks in #611
        • Variable: patroni_tags
      • Add the ability to set tags for HAProxy load balancers by @vitabaks in #613 #618
        • Variable: balancer_tags

Enhancements

  • Adds variables to enable client tls on pgbouncer by @n-borges in #585
  • update_pgcluster.yml improvements
    • Wait for caches to warm up after reboot by @vitabaks in #580
    • Use Patroni REST API instead of patronictl command to switchover by @SDV109 in #596
  • pg_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
    • 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)
  • Add patroni_restapi_listen_addr and postgresql_listen_addr variables by @vitabaks in #598

Fixes

  • update_pgcluster.yml
  • pg_upgrade.yml
    • Apply timeout directly to psql in PgBouncer pause script by @vitabaks in #600
    • Make sure that the 'recovery.signal' file is absent by @vitabaks in #607

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

  • Molecule: Update all system packages before testing by @vitabaks in #575

New Contributors

Full Changelog: 1.9.0...1.10.0

Release 1.9.0

03 Feb 21:15
139535c
Compare
Choose a tag to compare

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)
  • 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 for replica and async endpoints. By doing so, it enables excluding those replicas from load balancing whose lag exceeds the specified maximum, as determined by the patroni_maximum_lag_on_replica setting (default: "100MB").

Enhancements

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

Full Changelog: 1.8.0...1.9.0

Release 1.8.0

19 Aug 22:18
7ec51a3
Compare
Choose a tag to compare

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
  • Added restart option in config_pgcluster.yml (by @artemsafiyulin in #354)
  • Added pgbouncer authentication via auth_user and auth_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 and effective_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:
  • Update etcd to version 3.5.9 (2d96cf6)
  • Update Consul to version 1.14.7 (ca5a5fe)
  • Debian 12 (Bookworm) support (#382)

Dev and Tests

Read more

Release 1.7.0

28 Jan 18:38
Compare
Choose a tag to compare

New features

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

08 Nov 13:56
e23d43c
Compare
Choose a tag to compare

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

Comparing changes: 1.6.0...1.6.1

Release 1.6.0

20 Apr 14:38
d17a520
Compare
Choose a tag to compare

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

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

23 Aug 10:06
0fbe739
Compare
Choose a tag to compare

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

EOL

  • Delete Ubuntu 16.04 from the list of supported OS (75afbc2)

Release 1.4.1

05 Nov 09:42
Compare
Choose a tag to compare

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

03 Aug 10:10
64dcdae
Compare
Choose a tag to compare

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)
    variable nameservers (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)
    variable install_scl_repo: true (in vars/RedHat.yml)

  • Support for switch from scheme TypeB to TypeA (#43 thanks @jidckii )
    variable vip_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

01 May 12:58
a07c3ab
Compare
Choose a tag to compare

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 variable wal_g_install is true, 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