Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- new patroni_dcs parameter selects the distributed configuration store Patroni uses and passes arbitrary connection settings to it, allowing an externally managed store such as Consul or ZooKeeper. Accepted types are etcd3, etcd, consul, zookeeper, and exhibitor. Patroni's kubernetes type is not accepted, because it discovers the API server from a pod environment or a kubeconfig rather than from a configured endpoint, and this collection installs Patroni on ordinary hosts. (EE-33)
- install_patroni now installs the Patroni client library that matches the configured patroni_dcs type. (EE-33)
- Ultra-HA end-to-end test now covers an externally managed Consul store in addition to the default etcd cluster. (EE-33)
- new patroni_namespace parameter sets the key prefix Patroni uses within the distributed configuration store, so a store shared by more than one zone can give each zone its own prefix. Defaults to /db/, which matches the previous hardcoded value. (EE-33)
- new patroni_scope parameter sets the cluster name Patroni uses within the
distributed configuration store, so a store shared by more than one zone can
give each zone its own scope instead of its own namespace prefix, which some
stores make load-bearing. Defaults to
- , which matches the previous hardcoded value, and the patronictl invocations in setup_patroni and setup_backrest now name the cluster with it. (EE-33) - init_server now asserts that patroni_dcs.parameters is present when patroni_dcs.type names a store the collection does not deploy, so a missing key fails before bootstrapping rather than while Patroni is configured. (EE-33)
Fixed
- patroni_config_file and patroni_tls_dir now recognized by all roles.
- HA failover example in the usage guide now passes the Patroni scope the collection actually configures, which has included the Postgres version since v1.0.0.
- Patroni replication user now connects to all databases for logical slot creation.
- backup_repo_cipher default now properly deterministic.
- manually install Postgres contrib on RHEL systems where it may be missing.
v1.0.0
This release is a major overhaul that revises every role in the collection.
It replaces the pgEdge CLI component with standard RPM and DEB packages from
the pgEdge and PGDG package repositories. All local-user installation
semantics are removed in favor of the standard postgres OS user and
system-conventional paths.
This is a breaking change. Clusters deployed with v0.1 or v0.2 cannot be upgraded in place. Re-provision all nodes from scratch before deploying to production.
Added
- New
install_reposrole installs the pgEdge and PGDG package repositories on each node before any software installation takes place. Add this role to all playbooks immediately afterinit_server. (EE-22) custom_hba_rulesparameter accepts a list of custompg_hba.confrules to append to the default rule set.backup_userandbackup_passwordparameters define a dedicated PostgreSQL user withpg_checkpointprivileges for backup operations.backup_repo_userparameter specifies the OS user that owns the PgBackRest repository in SSH backup mode.proxy_portparameter allows HAProxy to run on a pgEdge node by setting a proxy port separate from the PostgreSQL listen port.pgedge_userandpgedge_passwordparameters define the internal user used for node-to-node Spock connections.tls_validity_daysparameter controls the validity period for generated TLS certificates.
Fixed
- Patroni cluster initialization now waits for the primary to become available before performing administrative operations.
Changed
- Switched to pgEdge distro-specific package repositories;
repo_namedefault changed fromdownloadtorelease. (EE-22) - PostgreSQL, etcd, Patroni, and PgBackRest are now installed from system
packages rather than downloaded locally. The
install_baseandcluster_pathparameters are removed. - PostgreSQL now runs as the system
postgresuser. Data and configuration directories follow OS conventions:/var/lib/postgresql/VERSION/mainand/etc/postgresql/VERSION/CLUSTERon Debian;/var/lib/pgsql/VERSION/dataon RHEL. pg_home,pg_path,pg_data, andpg_config_dirare now computed frompg_versionand OS family. Thecluster_path-based path variables are removed.- Default
pg_hba.confrules now use a least-privilege model and only include entries for known user and database combinations. Custom rules can be added viacustom_hba_rules. init_servernow disablesRemoveIPCin systemd-logind, creates thepostgresOS user on nodes that require SSH backup access, and validates configuration before any other tasks run.- Updated default etcd version to 3.6.5.
- Spock extension is now always installed at the latest available version.
- Several parameters previously scattered across role defaults are now
centralized in the
role_configrole.
v0.2.0
Added
- Ability to specify additional HAProxy listeners for specific Patroni node types. (EE-9)
- Restart Postgres in setup_patroni role to activate config changes. (EE-13)
Changed
- Switched to upstream etcd and Patroni releases. (EE-15)
- Set default Spock version to 5.0.
- Set default Postgres version to 17.
v0.1.0
The "real" release.
Added
- Ability to specify multiple database names for subscription management. (EE-12)
- Ability to specify exception_behaviour as parameter. (EE-7)
- Can now specify proxy_node to override automatic haproxy zone target. (EE-3)
Fixed
- Additional retries to circumvent Debian package management locks. (#15)
- replication_user and replication_password actually work now. (EE-14)
- Strip comments from ssh_keyscan output to avoid syntax errors. (#13)
- DDL replication now activates spock.allow_ddl_from_functions. (EE-10)
- Added lock_timeout parameter to all package tasks to avoid failures. (EE-8)
- Added explicit dependency to ansible.utils.ipaddr filter. (EE-1)
Changed
- Renamed db_name role parameter to db_names to list multiple database names. (EE-12)
v0.0.2
Added
- Initial creation and setup roles for pgEdge cluster resources.