© Copyright EnterpriseDB UK Limited 2015-2024 - All rights reserved.
-
Support PostgreSQL, EDB Postgres Extended, and EDB Postgres Advanced Server 17
Clusters can be configured to use PostgreSQL, EDB Postgres Extended and EDB Postgres Advanced Server version 17.
Barman no longer needs to install the postgres server package to get the
pg_receivewal
binary when using EDB Postgres Advanced Server 17 or EDB Postgres Extended 17 since the binary has been added to the client package for these versions.Raise an architecture error when a cluster is configured with
repmgr
as the failover_manager as it is not available for Postgres 17.Updated documentation to reflect supported versions.
References: TPA-803.
-
Add new option when using etcd with HARP
Add new optional var
harp_local_etcd_only
available when using etcd with HARP. This option tells HARP manager to connect to local etcd node. This recommendation follows the best practices learnt by doing the same whenbdr
as consensus procotol is being used.The default mode of adding multiple endpoints can lead to performance issues in some cases. This option is added to give more control to the user.
References: TPA-821.
-
Support STIG/CIS compliance
TPA now supports command-line options to create a cluster configured to conform to many of the requirements of the STIG and CIS security standards.
These options cause TPA to set many postgresql.conf settings as defined in the relevant standards, to install required extensions, to configure other aspects of system behaviour such as filesystem permissions and user connection limits, and to check for other requirements such as FIPS crypto standards which TPA can't directly impose.
The clusters thus generated are not certified by TPA to conform to the standards, but much of the groundwork of creating a conforming cluster is now automated.
References: TPA-366, TPA-836, TPA-837.
-
Add support for PGD Lightweight architecture
TPA is now able to generate a PGD Lightweight architecture comprised of three nodes in two locations (2 nodes in Primary and one in Disaster Recovery) designed to ease migrations from physical replication.
Users can now run
tpaexec configure lw -a Lightweight --postgresql 15
.References: TPA-838.
-
Have
configure
create a user-defined network on dockerThe configure command will now automatically add a named network and static IP addresses to config.yml when Docker is the selected platform.
The network name is the same as the cluster name and the address range follows the existing semantics of the --network option with the exception that only one subnet is used for the whole cluster rather than one per location. If a subnet prefix is not specified by the user, TPA will attempt to select a prefix which results in a subnet large enough to fit the whole cluster.
The key
ip_address
may now be used to specify a static IP for a Docker instance as long as a named network is specified in the config.yml.References: TPA-261, TPA-407, TPA-434.
-
Support RedHat Enterprise Linux 9 for ARM architectures
Packages are now published targeting RHEL 9 ARM64, and TPA should support deployments using this architecture and OS. Also updated the list of supported AWS images to include the RedHat 9 ARM64 AMI provided by Amazon. The default
instance_type
for ARM64 EC2 instances has been updated froma1
tot4g
, which is the current generation processor available for burstable general purpose workloads.References: TPA-780.
-
Added experimental support for using an existing Barman node as backup node in new cluster
When using an existing Barman node as a backup node in a new cluster, users can set
barman_shared: true
in the Barman instance's vars with the platform set tobare
and other information supplied as usual for bare instances.This change allows TPA to skip some configuration steps that would otherwise fail due to usermod issues, as the Barman user already has running processes from previous deployments.
The shared Barman instance is treated as a bare instance, so the required access, including the Barman user's access to the target PostgreSQL instances, must be already in place. Copying the Barman user's keys from the original cluster to the new cluster can be used to achieve this, see the Barman section of the TPA documentation for detailed information.
References: TPA-777, RT37792.
-
Only add nodes with
efm
role to clusterefm.nodes
fileA support ticket questioned why the
pemserver
andbarman
nodes are added to theAllowed node host list
in EFM when they are not relevant to EFM functions. Refactored the task that writes theefm.node
configuration to only include those nodes that haveefm
in their list of roles.References: TPA-817, RT40645.
-
Remove deprecated
PermissionStartOnly
in postgres.service.j2 templatePermissionsStartOnly
has been deprecated and is now achieved viaExecStartPost=+/bin/bash...
syntaxReferences: TPA-762.
-
Improve postgres-monitor script
Improve postgres-monitor script to better manage recoverable errors and add retries on network errors to ensure that it won't return failure when it just didn't allow enough time for postgres service to be fully started.
References: TPA-796, RT39191.
-
Enable EFM probes when a PEM agent is registered on an EFM node
The
--efm-install-path
and--efm-cluster-name
flags are set when a PEM server is registered on an EFM node.The
Streaming Replication
,Failover Manager Node Status
andFailover Manager Cluster Info
probes are enabled when a PEM agent is registered on an EFM node.References: TPA-586.
-
The
barman
Postgres user should not be a superuserCertain required privileges are granted to Postgres role,
barman_role
, which is then granted to thebarman
Postgres user. This avoids creating thebarman
user as a superuser. This role can also be granted to other Postgres users by adding it to theirgranted_roles
list usingpostgres/createuser
.The
barman_role
is created as part of the Barman tasks; if Barman is not used, this role will not be created. Therefore, the task that grants privileges to this role is only executed if thebarman_role
username is in the list of Postgres users that are created.The 'barman' user now has
NOSUPERUSER
explicitly specified as a role attribute. If a cluster was deployed with a previous TPA version (which created the 'barman' user as a superuser), deploying with this version will remove thesuperuser
role attribute from thebarman
user.References: TPA-148, TPA-818.
-
Add
postgis
to list of recognized extensionsThe PostGIS package will automatically be added when a user specifies
postgis
as an entry in eitherpostgres_extensions
or the list of extensions named underpostgres_databases
.Also enables the CRB (Code Ready Builder) repository for RHEL-compatible distributions so PostGIS dependencies can be installed.
References: TPA-771.
-
Allow multiple addresses to be supplied with hostnames
When using the
--hostnames-from
option totpaexec configure
, you can now include two ip addresses on each line, which will be included in the generated config.yml as public_ip and private_ip.References: TPA-841.
-
Make
password_encryption
algorithm forefm
Postgres user configurable.Expose a configurable
efm_user_password_encryption
variable which should be set to either'md5'
or'scram-sha-256'
depending on user requirements. This controls theauth-method
for theefm
Postgres user inpg_hba.conf
and the algorithm used for generating it's encrypted password.In clusters deployed with
compliance
configured tostig
, the 'efm' Postgres user'sauth-method
inpg_hba.conf
will be set toscram-sha-256
since FIPS-enabled operating systems do not allowmd5
to be used.References: TPA-832, TPA-836.
-
set pem_python_executable outside pkg role
Fixed a bug whereby if the user excluded the
pkg
selector, later pem-related tasks would fail because the pem_python_executable fact had not been set.References: TPA-814.
-
primary_slot_name
added for EFM compatibility interferes withbdr_init_physical
Previously, the
primary_slot_name
configuration task runs when thefailover_manager
is NOTrepmgr
; bothefm
andpatroni
usepg_basebackup
which, unlikerepmgr
, does not configure aprimary_slot_name
on the primary node when creating a replica. This is to ensure the old primary uses a physical slot for replication during a switchover.However, this also caused the task to run when the
failover_manager
isbdr
. Whenbdr_init_physical
was used on PGD cluster nodes, initialisation failed because it used a non-existent slot.This is fixed by conditionally running the task which configures the
primary_slot_name
when thefailover_manager
is explicitlyefm
orpatroni
to avoid setting it unnecessarily.References: TPA-712, TPA-825, RT36064.
-
Clear error message stack after each task
Fixed an issue whereby in some cases error messages would be repeated even after successful tasks.
References: TPA-812.
-
Fix tpaexec test for pgd-proxy config verification
Fixed a bug whereby the test that ensures the current pgd-proxy configuration matches the expected configuration would fail for version < 5.5.0. This fix ensures that TPA won't try to query configuration keys added in version 5.5.0.
References: TPA-819.
-
Enable new replicas in patroni clusters
Fixed an issue whereby new replicas in patroni clusters would fail with errors related to replication slots.
References: TPA-792, TPA-781.
-
Add
pem-agent
role on barman nodes at most once for M1 architectureIf
--enable-pem
and--enable-pg-backup-api
are passed totpaexec configure
,pem-agent
is added twice to thebarman
node if it is also awitness
. Fixed by by consolidating bothif
statements together to only evaluate the conditions once.References: TPA-793.
-
Download correct
bash-completion
package versionIf the
pgdcli_package_version
is specified inconfig.yml
, thebash-completion
package is incorrectly named because thepackages_for
filter erroneously appends thepgdcli_package_version
to the package name. This results in an attempt to download a nonexistant package.The
bash-completion
package is now appended to the list after thepackages_for
filter, since it's version is independent from thepgdcli_package_version
.References: TPA-794, RT38773.
-
Running deploy after a switchover fails for nodes with
efm-witness
roleThe
upstream-primary
for EFM nodes is determined using the facts gathered from Postgres. This fails for nodes withefm-witness
roles since they do not have Postgres. The task to determine upstream-primary is now run only on nodes withprimary
orreplica
rolesReferences: TPA-580, TPA-789, TPA-798.
-
Allow cert authentication on pgbouncer
pgbouncer can now use cert authentication when connecting to its postgres backend. This is particularly useful with FIPS; it's required because the authentication algorithm is also changed, from md5 to scram-sha-256. The variable
pgbouncer_use_cert_authentication
must be defined to true in cluster_vars, should someone decide to enable this mode. When this mode is enabled, TPA will create a CA and two more certificates replacing the self-signed certificate created by default in all clusters.Change requires a postgres restart.
References: TPA-650.
-
Remove support for Raid volume creation on AWS
TPA no longer supports RAID creation on AWS. All EBS volumes are automatically replicated across different servers which might be seen as redundant if during or before boot, a RAID device is provisioned. If anyone despite this level of default availability provided by AWS still requires a form of software RAID, the device must be created manually and configured to be used by TPA afterwards.
References: TPA-13.
-
Change default output to TPA's own format
Ansible's default output plugin shows a lot of information, much of which is useful when debugging but obscures the flow of information if you just want to see what TPA is doing. TPA now has its own output plugin, which shows one line of information per task, omitting tasks for which even one line would be uninformative. The lines are indented to enable TPA's control flow to be visible, and include colour-coded counts of successful, skipped, and ignored hosts.
The fuller output can be turned on by setting TPA_USE_DEFAULT_OUTPUT=true in your environment, or by adding the -v switch to the command line.
References: TPA-673, TPA-778.
-
Run efm upgrade-conf on new clusters
Run the efm upgrade-conf on new cluster deployments to benefit from the comments and inline documentation that are added to both <cluster_name>.properties and <cluster_name>.nodes files.
References: TPA-707.
-
Add efm-pre-config hook
The efm-pre-config hook runs after efm has been installed and its configuration directory and user have been created, but before efm is configured. It can be used to install custom efm helper scripts.
References: TPA-791.
-
Add support for passing options to register PEM agent
Additional options can be included when registering PEM agents by listing them under
pemagent_registration_opts
incluster_vars
.References: TPA-584.
-
Update upstream_primary after switchover
The
upstream_primary
is now correctly updated after switchover, resulting in the correctauto.reconfigure
setting be set on replicas. Standbys now follow the new primary.References: TPA-580.
-
Allow customer's to use their own SSL certificates on the PEM server
Users can include the names of the certificate and key pair for use on the PEM server in
config.yml
under the cluster_vars or pem-server instance varspem_server_ssl_certificate
andpem_server_ssl_key
. TPA will copy them from thessl/pemserver
directory of the cluster directory to the PEM server and configure Apache/httpd accordingly.References: TPA-718, TPA-752, RT35811.
-
Add missing properties to efm template
Add properties that are present in EFM 4.9 that were not in the template already:
enable.stop.cluster: boolean, default true priority.standbys: default '' detach.on.agent.failure: boolean, default false pid.dir: default ''
On existing clusters, since this means a change in the EFM configuration, TPA will restart EFM services to make sure changes are applied.
EFM agents only process the properties that they know about, so if the new properties are written out for an older version of EFM that does not use them, they will be ignored.
References: TPA-776.
-
Enable efm to use hostname instead of IP address as
bind.address
Add a new configure option to let efm setup the cluster using hostname resolution instead of IP addresses for
bind.address
value.Introduce
--efm-bind-by-hostname
for architecture M1 configure command andefm_bind_by_hostname: true|false
in cluster_vars section of config.yml. Defaults tofalse
when omitted.References: TPA-758.
-
Remove EFM dependency for resolving upstream_primary
Previously, EFM was queried for the current primary on a deploy after a switchover. If EFM is not running, this will fail. Now the cluster_facts collected through Postgres are used to determine the current primary after a switchover, removing the dependency on EFM.
References: TPA-789, TPA-580.
-
Fixed an issue when backing up from a replica
When taking backups from a replica, barman could fail when taking its initial backup by timing out waiting for WAL files. This is fixed by waiting for barman to complete its base backup before forcing a WAL segment switch.
References: TPA-719.
-
Ensure we flush handlers soon after finishing postgres configuration
This problem manifested itself when a new node was added to a repmgr or efm cluster, TPA would fail to reload/restart postgres on existing nodes to re-read configuration changes and the new node would therefore fail to connect to the cluster.
References: TPA-781.
-
Ignore proxy settings when accessing the Patroni API
The Ansible default is to use a proxy, if defined. This does not work in the (rather common) case of an airgapped environment that needs a proxy to download packages from the internet, because the proxy also intercepts (and disrupts) calls to the Patroni API.
References: TPA-790.
-
Set appropriate PEM agent parameters monitored servers
TPA broadly sets PEM agent parameters on all instances that are only appropriate for the pemserver instance. This is fixed by conditionally setting parameters in
agent.cfg.j2
based on whether or not the node is a pem-server.References: TPA-744.
-
Fix incorrect detection of cgroup data
Fix two cases of incorrect cgroup detection:
- on MacOSX, we no longer try to read /proc/mounts
- on systems where /sys/fs/cgroup is ro but mounts under it are rw, we now correctly detect this
References: TPA-760.
-
Fix missing pgd-proxy and pgdcli package name for SLES
Add missing entries for pgd-proxy and pgdcli default package name when using SLES operating system as target for cluster nodes.
References: TPA-768.
-
Fix witness node registration to repmgr
Ensure that
repmgr witness register
command is used with the correct postgres_port value even when using non-default postgres port for the upstream_primary postgres.References: TPA-772.
-
Honour failover_manager when overriden at instance level for PGD instances
Allow failover_manager override to
repmgr
to work correctly when set at instance level for subscriber-only nodes and their replicas in PGD clusters.References: TPA-767.
-
Fix tpaexec test for pgd-proxy read_listen_port check
Ensure we can verify the actual config set on pgd-proxy nodes for the newly added
read_listen_port
option in pgd-proxy.References: TPA-775.
-
Explicitly install packages for PEM web server
PEM 9.7.0 no longer depends on Apache at a package level therefore to use Apache as the web server we install the packages explicitly. This prevents deploy failing with PEM 9.7.0 or later.
References: TPA-795.
-
Add support for ARM64 in Debian 12 (Bookworm)
This debian version is the first in its kind to receive full EDB support on arm64 devices.
References: TPA-528.
-
Change haproxy_bind_address when Patroni is failover_manager
The default value of
haproxy_bind_address
(127.0.0.1
) does not allow for communication between Postgres nodes and haproxy nodes. The bind address is now set to0.0.0.0
when Patroni is the failover manager. Users should change this value to something more restrictive and appropriate for their cluster networking.References: TPA-720.
-
Basic integration between Patroni and PgBouncer
The
--enable-pgbouncer
option oftpaexec configure
is made available so users can easily create a cluster with PgBouncer. When given through the command-line, TPA will add thepgbouncer
role to the Postgres hosts and configure PgBouncer to pool connections for the primary node.When adding PgBouncer nodes in a Patroni enabled cluster, TPA configures Patroni with a
on_role_change
callback. That callback takes care of updating the primary connection info in the PgBouncer nodes in response to failover and switchover events.References: TPA-754.
-
Various task selection fixes
Task selectors are now consistently applied in the final stage of deployment. Consistency of task selectors in the tests is improved and the examples of task selectors in the docs are now correct.
All deploy-time hooks now have corresponding task selectors.
References: TPA-713.
-
Support configuring read-only endpoints on PGD proxy nodes
PGD version 5.5 allows for proxy nodes to be configured as read endpoints, which direct read-only queries to a shadow node. TPA supports this configuration option by setting a
read_listen_port
parameter underdefault_pgd_proxy_options
andpgd_proxy_options
inconfig.yml
. This parameter is included by default when the PGD version is >= 5.5.Users can also specify the port numbers by passing
--proxy-listen-port
andproxy-read-listen-port
arguments to thetpaexec configure
command.References: TPA-722.
-
Make barman-cli package subject to barman_package_version
If barman_package_version is set, TPA will now look at it when looking for the barman-cli package as well as for barman itself. This resolves an inconsistency which caused clusters using the downloader to fail when barman_package_version was used.
References: TPA-749.
-
Force barman 3.9 when installing rpms from PGDG
To work around broken barman 3.10 packages in the PGDG repos, TPA now installs version 3.9 of barman if using PGDG repos on an RHEL-family system. This behaviour can be overridden by explicitly setting barman_package_version in config.yml .
References: TPA-750.
-
Add support for
postgres_wal_dir
in Patroni deploymentsWhen a custom
postgres_wal_dir
is specified in TPA configuration, TPA will make sure to relay that option to the corresponding settings in the Patroni configuration file.That way, if Patroni ever needs to rebuild a standby on its own, out of TPA, the standby will be properly set up with a custom WAL directory.
References: TPA-741.
-
Allow the user to choose between
edb-patroni
andpatroni
packagesEDB now produces its own
edb-patroni
package instead of rebuilding thepatroni
packages from PGDG. As a consequence, TPA was changed to allow users to select betweenpatroni
andedb-patroni
packages.The selection is made through the new TPA setting
patroni_package_flavour
, which can have one among the following values:edb
: Installedb-patroni
(using EDB repositories). This requires the user to configureedb_repositories
TPA setting;community
: Installpatroni
package (using PGDG repositories). This requires the user to configurePGDG
repository in eitherapt_repository_list
,yum_repository_list
orsuse_repository_list
TPA settings, depending on the target operating system.
Note that you can change the package flavour at any time. TPA is able to transparently migrate between flavours. You only need to make sure the appropriate repositories are configured.
For TPA clusters which have no
patroni_package_flavour
set in the configuration file, TPA will attempt to infere the flavour based on the configured repositories. If EDB repos are configured,edb
flavour is assumed, otherwisecommunity
flavour.References: TPA-725.
-
Fixed an issue whereby docker provisioning failed with "read-only file system"
On host systems running cgroup1 with docker containers running recent OS images,
tpaexec provision
could fail to provision containers with an error message like "mkdir /sys/fs/cgroup/tpa.scope: read-only file system". TPA will now detect this case and avoid it.References: TPA-740.
-
Clear error message when running cmd or ping before provision
References: TPA-733.
-
Fixed permissions for harp dcs user
Fixed an issue whereby required permissions on functions in the bdr database were not being granted to the harp dcs user on a witness node.
References: TPA-746.
-
Flexible M1 architecture
The M1 architecture now supports the following additional arguments to
tpaexec configure
:--location-names --primary-location --data-nodes-per-location --witness-only-location --single-node-location
By combining these arguments, various layouts can be specified.
References: TPA-333.
-
Add support for Debian 12 x86
Now it's posible to enjoy tpaexec packages for bookworm but also create and manage clusters in either docker and AWS.
References: TPA-717.
-
Introduce support for ppc64le
Customers running on ppc64 infrastructure can now install and use tpaexec directly from our packages. Thanks to this new advance, the gap between x86_64 and ppc64le regarding accessibility of software has been reduced.
References: TPA-675.
-
Support cgroups v2 systems for the docker platform
TPA can now provision docker clusters on hosts running cgroups 2, for all systems except RHEL 7. On newer systems (RHEL 9 or Ubuntu 22.04), TPA will use cgroups 2 scopes for additional isolation between the host and the containers.
References: TPA-441.
-
Document instructions for creating an Execution Environment (EE)
TPA version 23.30 introduced the support for Ansible Automation Platform (AAP) version 2.4. This version of AAP makes use of EE to run ansible playbooks. This change includes updates to the tower/AAP documentation to include instructions on creating your own EE.
References: TPA-708.
-
Add useful extensions by default when role is pem-agent
The
sql_profiler
,edb_wait_states
andquery_advisor
extensions are automatically included for anypem-agent
node.The list of default extensions for pem-agent nodes is overridable by including a list of
pemagent_extensions
in config.yml.If this list is empty, no extensions will be automatically included.
References: TPA-336.
-
Update AWS AMI versions
AWS AMI versions for certain distributions will be out of date, so each supported AMI was updated to the latest version.
References: TPA-710.
-
Install chrony NTP service by default
TPA will install chrony during deploy now keeping the default config upon all except on AWS where we point to Amazon Time Sync service.
References: TPA-93.
-
Add --force option to
tpaexec relink
By default, relink doesn't modify targeted files if they already exist. With --force, relink removes all existing targeted files then recreates them.
--force is needed to update AAP-enabled cluster directories after TPA package upgrade and is also useful for rescuing a cluster that has been broken by manual intervention.
References: TPA-706.
-
Add
pg_failover_slots
to recognized extensionspg_failover_slots is a module, so CREATE EXTENSION cannot be run for its entry in either
postgres_extensions
or the list of extensions named underpostgres_databases
.A key-value pair of
module: true
is included with its entry in thedefault_postgres_extensions_dictionary
.Logic is added to construct a list of extensions flagged
module
and remove the entries from thepostgres_extensions
and extensions underpostgres_databases
if necessary.The required package and shared_preload_library entry are included and CREATE EXTENSION is not run for
pg_failover_slots
.References: TPA-406.
-
Add ip_address to the ip_addresses list
If the key
ip_address
is defined for a node, add a corresponding entry toip_addresses
. This ensures that TPA can correctly work out whether streaming is working correctly when re-running deploy on an existing cluster.This fixes error messages like "Unrecognised host=10.136.4.247 in primary_conninfo" for nodes with
ip_address
defined.References: TPA-711, RT103488.
-
Use archive.debian.org to get buster backports on aws
The backports repository for debian 10 (buster) is no longer available on deb.debian.org but the standard AWS AMI still refers to it, so we modify /etc/apt/sources.list accordingly before attempting apt operations.
References: TPA-715.
-
Prevent deployment failing on AWS when
assign_public_ip:no
is setWhen AWS was selected as platform and
assign_public_ip
was set to no, there were some cases where tpa was still looking for a public IP. This change now prevents that.References: TPA-666.
-
Change to sourcedir when compiling BDR from source
Move to the location where the source code has been downloaded before compiling BDR instead of using a relative path. This decreases the chances of picking a wrong Makefile or worse, ending in a broken path.
References: TPA-153.
-
Suppressed 2q token error message
Fixed an issue whereby an error would be raised if the user had an expired subscription token for 2q repositories, even if their configuration didn't use those repositories.
References: TPA-705.
-
Fix formatting of
line
option forlineinfile
commandThe task was skipped because the command was incorrectly formatted, resulting in the restore_command override not being removed from
postgresql.auto.conf
References: TPA-691.
-
Fix problems with custom barman and postgres users
Fixed problems with various roles that caused mixed errors when trying to use custom users for barman and postgres, thereby resulting in a failed deployment.
References: TPA-704, TPA-151.
-
Fix relink error when upgrading
Fixed an error whereby
tpaexec upgrade
could invoke the relink script in a way which caused an error and showed an unhelpful usage message fortpaexec relink
.References: TPA-721.
-
Fix errors in conditionals
Fixes to syntax errors in some conditionals which could stop a deploy from running.
References: TPA-702.
-
Remove support for ansible versions less than 8
Ansible 2.9 is no longer supported, neither as the community distribution nor as the 2ndQuadrant fork. Please note that, per the previously issued deprecation notice, this release completely removes support for 2ndQuadrant Ansible, which is no longer maintained. In addition, after Ansible 8 became the default in version 23.29, this version requires Ansible 8 or newer. To ensure you have a compatible Ansible version, please run tpaexec setup after updating TPA as detailed in the documentation.
Users who have been using the
--skip-tags
option totpaexec deploy
should move to the new--excluded_tasks
option.References: TPA-501, TPA-686.
-
Generate an Execution Environment image for Ansible Automation Platform support
TPA now generates a custom Execution Environment docker image to be used in Ansible Automation Platform 2.4+ (Controller version 4+). This image contains everything needed to run deployments via AAP. This image is built using ansible-builder and either redhat ee-minimal-rhel9 image or a python-alpine lightweight base image.
References: TPA-679, TPA-680, TPA-682.
-
Task selectors replace ansible tags
Selective execution of tasks is now supported using custom selectors rather than ansible tags.
To run only tasks matching a certain selector:
tpaexec deploy . --included_tasks=barman
To skip tasks matching a certain selector:
tpaexec deploy . --excluded_tasks=ssh
Task selectors can also be used by specifying the
excluded_tasks
orincluded_tasks
variables in config.yml .References: TPA-657.
-
Improve extension configuration
Automatically handles adding package names and shared preload library entries for a subset of extensions.
For these specific extensions, only the extension name is needed in the
extra_postgres_extensions
list or the theextensions
list of a database entry inpostgres_databases
.References: TPA-388, TPA-293.
-
Add
bluefin
to list of recognized extensionsThe EDB Advanced Storage Pack package and shared preload library entry will automatically be added for
bluefin
when a user specifies it as an extension and thepostgres_version
is 15 or greater.References: TPA-307.
-
Avoid synchronizing database structure to PGD witness nodes
Currently, when creating a witness node, PGD will by default synchronize the source node's database structure. This is however not necessary and the synchronized schema will never be used or updated. To prevent this happening, explicitly set bdr.join_node_group()'s option "synchronize_structure" to "none" for witness nodes.
References: TPA-665.
-
Add option to provision without deploying
If an instance has
provision_only: true
in config.yml, it will be provisioned as normal but not added to the inventory which is seen bytpaexec deploy
.An example use for this is with a custom docker image to set up a testing environment.
References: TPA-627.
-
Fix preloads that differ from their extension name
Addressed by TPA-388, the
default_postgres_extensions_dictionary
contains the correct shared preload library entry name for each extension.References: TPA-645.
-
Support choosing Ansible version
The
--ansible-version
argument totpaexec setup
now accepts8
or9
as valid ansible versions, as well as the existing2q
orcommunity
, both of which imply ansible 2.9. The default is now8
.Support for ansible 9 is experimental and requires python 3.10 or above.
References: TPA-646.
-
Support Keyring for cluster vault password storage
Add support for system keyring to store cluster vault password by default. This leverages python keyring module to store vault password in the supported system keyring when
keyring_backend
is set tosystem
(default for new clusters). This change does not impact existing clusters or any clusters that setkeyring_backend
tolegacy
in config.yml.vault_name
setting in config.yml is used in combination withcluster_name
to ensure uniqueness to allow provisioning for multiple clusters that all use the samecluster_name
setting. Refer to tpaexec-configure.md for details.References: TPA-85.
-
Fix edb_repositories generated by reconfigure
Ensure that edb_repositories already defined in config.yml are kept during reconfigure especially now that all cluster will use edb_repositories by default. Fixes bdr4 to pgd5 upgrade scenario in air gapped environment.
References: TPA-660.
-
Improve error recognition in postgres-monitor
postgres-monitor will now recognise the message "the database system is not yet accepting connections" as a recoverable error.
References: TPA-658.
-
Skip postgres/config/final role on replicas when upgrading
References: TPA-639.
-
Respect package versions in the downloader
When using the downloader on a Debian-family system, we now perform our own fnmatch-style globbing on any package versions specified in config.yml, enabling constructions like
bdr_package_version: 4:5.0.*
to behave in the same way as when the downloader is not in use.References: TPA-583.
-
Ensure that the downloader gets latest packages for Debian
The downloader now runs apt-get update before fetching packages on Debian and Ubuntu systems
References: TPA-575.
-
Disable transaction streaming when camo is enabled
Set
bdr.default_streaming_mode
tooff
when--enable_camo
is givenReferences: TPA-550.
-
Detect selinux and act accordingly on barman servers
In minimal_setup, populate ansible_facts.ansible_selinux.status as the full setup module would do.
On a barman server with the backup api enabled, set the httpd_can_network_connect boolean if required.
Fix the existing code to set selinux context on a barman server.
References: TPA-491.
-
TPA-648 Refactor deployment of Patroni clusters
TPA now sets up replicas before handing over control of the cluster to Patroni, rather than setting up the primary only and letting patroni set up the replicas.
-
TPA-309 Introduce harp_manager_user
If harp_manager_user is defined in config.yml, TPA will create the user, belonging to the
bdr_superuser
role, and set HARP manager to operate as this user instead of as the postgres superuser.
-
TPA-157 New option postgres_log_file
This option sets the postgres log file, whether logging through stderr or syslog. The default is '/var/log/postgres/postgres.log', the previously hard-coded value.
-
TPA-601 New hook barman-pre-config
This hook is invoked after Barman is installed and its user is set up but before it is configured. It can be used for installing certificate files or other tasks which need the barman user to exist but which must be done before Barman is started.
-
TPA-641 Support specifying elastic IP address on AWS clusters
The key
elastic_ip
on an instance in config.yml can be set to an elastic IP address that has already been allocated in order to assign it to this instance.
-
Don't try to install repmgr on an efm cluster running postgres > 11.
-
Exit successfully from a deployment when the deployment succeeds but we issue a warning about using 2ndQuadrant repositories.
-
TPA-463, TPA-583 Interpret wildcards correctly on Debian-family systems when downloading packages for offline use.
-
TPA-576 Use correct package names for repmgr when installing from PGDG repositories.
-
TPA-593 Fix barman connection failure when using selinux and a custom barman home directory.
-
TPA-638 Use correct cluster name in show-password and store-password commands when it is different from the directory name.
-
TPA-642 Error out cleanly if unavailable 2ndQuadrant repository keys are required.
-
TPA-644 Sanitise hostnames correctly when the --cluster-prefixed-hostnames option is used.
-
TPA-656 Ensure packages are correctly copied to the remote host when upgrading a cluster using a local repo.
-
Misc. documentation changes
-
TPA-553 TPA support for v16 supported software
Because v23.23 introduced the initial support for installing Postgres v16, this change makes sure that TPA correctly handles v16 supported software.
-
TPA-562 TPA requires Python v3.9 to work
-
TPA-582 Remove dependency on 2q repositories
Newly configured clusters will now never use 2q repositories.
The new
--replace-2q-repositories
argument totpaexec reconfigure
will remove 2q repositories from an existing config.yml and add suitable EDB repositories for the cluster's postgres flavour and BDR version, if applicable.tpaexec deploy
will then apply these changes to the servers in the cluster. -
TPA-637 Allow a different Barman user when connecting to servers
-
TPA-467 Change octal integers to strings to abide by Ansible risky-octal linting
-
TPA-609 No longer rely on Makefile to install tpaexec from source
-
TPA-616 Allow deployment regardless of where dependencies originated
-
TPA-618 Generate a primary_slot_name on primary for efm
Generate a primary_slot_name also on primary node to be used in case of switchover, to ensure the switched primary will have a physical slot on the new primary.
-
TPA-626 Improve CAMO commit_scope generation during reconfigure
Ensure that commit_scope for CAMO enabled partners is generated using existing config options from older BDR versions when running tpaexec reconfigure command to prepare for major PGD upgrade. Improve default value when no previous config exist.
-
TPA-631 Warn if existing cluster are stil using 2q repos
-
TPA-634 and TPA 483 Support Oracle Linux 7, 8 and 9 on Docker platform
Support for AWS platform is underway.
-
TPA-560 Fix some patroni warnings
-
TPA-629 Avoid OOM condition by reducing maintenance_work_mem by default
-
Add --cluster-prefixed-hostnames option to
tpaexec configure
This makes it easy to avoid hostname clashes on machines hosting more than one docker cluster.
-
TPA-617 Add packages to enable Docker builds on Mac OS X
-
TPA-483 Support Oracle Linux 9 on the Docker platform
-
TPA-608 Fix pemserver agent registration
When there are multiple PEM servers in a cluster, ensure that the agent running on a server registers to its local server.
-
TPA-628 Improve default CAMO settings for PGD 5
Set timeout to 60s and require_write_lead to true.
-
TPA-592 Use bdr_node_name in harp fencing/unfencing
If bdr_node_name is different from the hostname, use it explicitly when fencing or unfencing a HARP node.
-
TPA-558 Suppress automatic provision for some deploy options
When options that will suppress the actual deployment run are given to
tpaexec deploy
, don't automatically run provision beforehand. -
TPA-614 Fix BDR 3 to PGD 5 upgrades for CAMO clusters
When upgrading a BDR 3 cluster which uses CAMO to PGD 5, ensure that CAMO config is set up correctly.
-
Misc. documentation changes
-
TPA-445 Support upgrades from BDR 3.7 to PGD5
A BDR 3.7 cluster created with BDR-Always-ON architecture, can now be upgraded to the PGD-Always-ON architecture, running PGD5, by using
tpaexec reconfigure
to generate a revised config.yml for PGD5 and thentpaexec upgrade
to perform the upgrade.Minimum version for PGD5 to upgrade to needs to be 5.3.
Please refer to the section
Upgrading from BDR-Always-ON to PGD-Always-ON
intpaexec-upgrade.md
in the documentation for details on the upgrade procedure.Note: The upgrade procedure for camo enabled clusters is not yet supported. This support will come in a later release.
-
TPA-552 Backport upgrade improvements to BDR-Always-ON
A number of improvements were introduced to the upgrade process for BDR4 to PGD5 upgrade as part of TPA-387 including improved checks for compatibility, simplified handling of components being upgraded, and using HARP fencing functionality to guard against writes being directed to nodes while they're being upgraded. This change backports some of those improvements to BDR-Always-ON upgrades also.
-
TPA-603 Support installing PEM on SLES
-
TPA-615 Set explicit permissions when creating filesystem objects
Also partially covers TPA-467. More improvements in this area targeted for later versions.
-
TPA-462 Add pgd-cli config symlink for pgd-cli v1
Adds a symlink to the pgd-cli config file for v1 so it could be run without having to specify the path via
-f
switch. -
TPA-587 Set node kinds as part of BDR4 deployment and upgrade
BDR 4.3.0 had introduced support for
alter_node_kind
to set nodes kinds as appropriate. This change ensures node kinds are correctly set for BDR-Always-ON clusters using BDR version 4.3 and above. -
TPA-604 Switch to using SP5 for SLES 15
Default cluster configuration from now on will use SP5 when SLES 15 is requested.
-
Misc. documentation changes
-
TPA-611 Fix
tpaexec setup
problems for tpaexec-deps usersv23.24 switched the default ansible installed as part of
tpaexec setup
command from 2q-ansible to community ansible which resulted in a checksum failure duringtpaexec setup
command for tpaexec-deps users. -
TPA-613 Make sure
pem_server_group
(if specified) applies to pemworker -
TPA-595 Make sure
sar
runs on all nodessys/sysstat role in previous versions installed and configured
sar
but it would only set up the cron job responsible for sar on the barman node which meantsar
won't run on other instances. Also instead of cronjob, usesystemd
timers for configuring sysstat. -
TPA-605 Remove references to defunct "shared" platform
-
TPA-499 Change default ansible version to community ansible
tpaexec setup
now defaults to using community ansible rather than 2ndQuadrant ansible. The option--use-2q-ansible
can be used to force the use of 2ndQuadrant ansible, which is now deprecated and will be removed in a future release. If you are using--skip-tags
, see the install documentation.
-
TPA-529 Remove unwanted EDB repositories
When a repository has been removed from
edb_repositories
in config.yml,tpaexec deploy
now removes it from the nodes. -
TPA-554 Fix harp configuration when proxy and manager are cohosted
Detect when harp-proxy and harp-manager are running on the same node and use a different config file for harp-proxy.
-
TPA-472 Update repositories as part of upgrade process
-
TPA-532 Respect postgres_wal_dir in pg_basebackup invocation
-
TPA-578 Accept repmgr as failover manager for subscriber-only nodes in BDR clusters
-
TPA-594 Fix typo preventing build of ubuntu 22.04 docker images
-
TPA-602 Reject the unsupported combination of the BDR-Always-ON architecture, the EDB Postgres Extended flavour, and PEM at configure-time.
-
TPA-551 Add support for Postgres 16
Accept
--postgres-version 16
as a valid tpa configure option. PG 16 support available for M1 for now. Support for PGD clusters awaits the release of EPAS and PGE version 16 (scheduled for later). Also, stop configuring legacydl/default/release
2Q repository by default for it is no longer available for PG versions 16 and above. Since PG has removedpostmaster
symlink, make the change where relevant to usepostgres
binary instead.
-
TPA-534, TPA-535 Add SUSE entries for etcd and patroni package lists
-
TPA-548 Adjust EFM dependency lists to use JDK 11 by default, except on platforms where it is not available (Debian 9 and Ubuntu 18.04)
-
TPA-545 Don't exclude PGDG packages if no EDB repositories are in use
When using EDB repositories, we exclude barman-related packages and psycopg2 packages from the PGDG repositories; if no EBD repositories are in use, we now don't exclude these packages.
-
TPA-440 Ensure apache service is enabled and started for PEM
-
TPA-471 Run pg-backup-api tests with correct permissions
-
TPA-569 Ensure apache service is enabled and started for pg-backup-api
-
TPA-527 Fix bdr.standby_slot_names and bdr.standby_slots_min_confirmed checks to use correct schema on bdr3 clusters
-
TPA-564 Flatten configuration keys for extensions in postgres config
Instead of supplying configuration keys for extensions as a nested dictionary, which doesn't work, we format them as
extension_name.config_key: "value"
and put them in a single flat list.
-
TPA-536 Construct docker image names correctly
A locally built docker base image has no digest, so we refer to it by its tag when building the final image.
-
TPA-478 Use edb_repositories for M1 by default
TPA now generates a default configuration for new M1 clusters to use the EDB repos 2.0. Access requires a subscription. For details, see https://www.enterprisedb.com/repos-downloads
To use these new repos, you must obtain a subscription token from the URL above and "export EDB_SUBSCRIPTION_TOKEN=" before you run "tpaexec deploy".
Existing clusters are unaffected by this change, regardless of their repository configuration.
You can always override the default repository configuration by using
--edb-repositories standard
(or enterprise, depending on which repo your subscription provides access to).To avoid confusion, TPA does not permit EDB repos 2.0 to be configured with the old 2ndQuadrant repos on the same instance. You can specify a list of
--2Q-repositories
to use instead, but only if you do not specify any--edb-repositories
.(PGD-Always-ON and BDR-Always-ON clusters are unaffected; the former will always use EDB repos 2.0, while the latter uses the 2ndQuadrant repos, together with EDB repos 1.0 for EPAS.)
-
TPA-526 Make --failover-manager a mandatory configure option for M1
You must now choose between efm, patroni, and repmgr when generating a new cluster configuration. Note that repmgr is not supported for use with EPAS clusters.
-
TPA-490 Add bash-completion support for pgd-cli with PGD5
-
TPA-523 Allow creating a replica of a [bdr,subscriber-only] node
The earlier code incorrectly required 'subscriber-only' to be set on the replica, instead of the upstream instance.
-
TPA-156 Skip some inapplicable tasks while running in containers
TPA would skip certain tasks when it knew that the target instances were containers, but it would not do so if you deployed to containers with
platform: bare
set. Now it uses systemd-detect-virt to decide whether to skip those tasks (like setting the hostname or sysctls). -
TPA-444 Ensure consistent permissions for /etc/edb
Earlier, if you added the pgd-proxy role to a data node in a deployed PGD5 cluster, pgd-proxy would fail to start because it did not have permissions to open pgd-proxy-config.yml.
-
TPA-447 Ensure consistent permissions for /var/log/postgres
Earlier, the directory could end up with the inappropriate mode 0600 if a strict umask was set.
-
TPA-549 Fix problem with Barman registration for pemagent
Earlier, repeating
tpaexec deploy
on a Barman instance correctly registered with PEM would lose the Barman configuration.
-
TPA-387 Allow upgrades from BDR4 to PGD5
A cluster created with the BDR-Always-ON architecture, running BDR4, can now be upgraded to the PGD-Always-ON architecture, running PGD5, by running the new command
tpexec reconfigure
to generate a revised config.yml and thentpaexec upgrade
, which replacestpaexec update-postgres
, to perform the upgrade.The minimum version requirement to start the upgrade is BDR4.3. A cluster running an older version of BDR must be upgraded to BDR4.3 before doing the major-version upgrade.
Please refer to the section
Upgrading from BDR-Always-ON to PGD-Always-ON
intpaexec-upgrade.md
in the documentation for details on the upgrade procedure.
-
TPA-322 Add source validation
The new subcommand
tpaexec info validate
runs a checksum over the TPA installation and confirms that it matches the one distributed with the package. This is not a security mechanism, but rather a way of confirming that an installation has not been altered when debugging unexpected behaviour. -
TPA-513 Work around broken OpenJDK dependencies on RHEL
On RHEL8 or RHEL9, when installing EFM, we install OpenJDK as a prerequisite, which has a broken dependency on the tzdata-java package. So we add tzdata-java explicitly to our package list.
-
Bump PyYAML version from 6.0 to 6.0.1
-
Update to the latest Debian AMIs for AWS clusters
-
Run
tpaexec provision
automatically as part oftpaexec deploy
ortpaexec upgrade
if config.yml has changed
-
TPA-521 Use correct user when running pgd-cli on pgd-proxy nodes
When upgrading a PGD-Always-ON cluster with a pgd-proxy node which is not also a BDR node, we now run pgd-cli as a user which is guaranteed to exist.
-
If the cluster directory has been set up as a git repository, commit changes made by
tpaexec relink
correctly
-
TPA-455 Allow physical standby HA for 'subscriber-only' nodes
'subscriber-only' nodes in a PGD cluster only receive data, which makes them a good choice as CDC sources in PGD clusters. This change allows creating physical replicas of subscriber-only nodes, so that a replica with the same LSNs is available in case of a failure of a subscriber-only node used as a CDC source.
-
TPA-453 Accept
--enable-harp-probes
and--enable-pgd-probes
configure options to enable http(s) health probes for harp-proxy and pgd-proxy respectivelyThese configure options introduce
harp_http_options
andpgd_http_options
settings respectively in the config.yml with minimal default options for health probes. See harp.md and pgd-proxy.md for details on configuring these options in TPA. For further details on health probes usage, consult product documentation for HARP and PGD Proxy. -
TPA-392 Introduce initial support for Patroni for M1 clusters
Accept
--enable-patroni
configure option to enable patroni as the failover manager for M1 clusters. Alternatively, setfailover_manager: patroni
in config.yml to enable Patroni support. The initial support is for experimental purposes and not recommended for production deployment yet. For more details of Patroni support in TPA, refer to patroni.md.
-
TPA-410 Select correct debug package suffix on Debian-like systems
On Debian-like systems, fix the package selection code so we use
-dbg
rather than-dbgsym
for certain packages where applicable. Previously, we always looked for-dbgsym
packages when installing EPAS, but now the same logic applies to EPAS as for other flavours. -
TPA-451 Restrict the character limit for the name of the downloader Docker container to a maximum of 64 characters
When using
tpaexec download-packages
command, the host name for the downloader container is formed by adding-downloader
to the cluster name; in the case of a systematically generated cluster name, this can result in a name longer than Docker's maximum 64-character limit and somewhat confusing error. TPA now simply truncates the name to 64 characters if necessary when setting the details for the downloader. -
TPA-465 Don't allow hyphens in primary_slot_name
Our default_primary_slot_name gets set to the inventory_hostname which could be using hyphens but Postgres does not accept that and it would result in a warning similar to:
WARNING: replication slot name \"tpa_amva-mnl-feather\" contains invalid character HINT: Replication slot names may only contain lower case letters, numbers, and the underscore character.
-
TPA-489 Allow version setting for edb-pgd-proxy and edb-bdr-utilities.
This allows installing specific versions of the named packages instead of always installing the latest version.
-
TPA-481 Bump default EFM version to 4.7
-
TPA-479 Misc. code tidying related changes
-
Misc. documentation improvements
-
TPA-457 Fix regression in PGD 3.7 to 4 upgrades. This was a recent regression in 23.18
-
TPA-452 Don't use underscore in CN for PEM agent's SSL certificate
Per RFC 952, hostnames and subsequent CNs can only contain letters, digits and hyphens. Some platforms are more tolerant to the violation of this rule, on others it results in a error similar to:
"msg": "Error while creating CSR: The label pemagent_ghzedlcmbnedb01 is not a valid A-label\nThis is probably caused because the Common Name is used as a SAN. Specifying use_common_name_for_san=false might fix this."}
-
TPA-456 Fix wrong etcd service name for Debian platforms. This was a recent regression affecting Debian-like platforms and resulting in an error similar to:
TASK [etcd/start : Ensure the service state could be found] fatal: [kinfolk]: FAILED! => { "assertion": false, "changed": false, "evaluated_to": false, "msg": "The systemd service for etcd could not be found" }
-
TPA-464 Fix problems with installing PGDG etcd packages on RHEL 8
TPA recently introduced support for installing etcd packages that are not specific to PGD installation; mainly for the patroni support in M1 clusters, but that failed for RHEL 8 because it needs pgdg-rhel-extra repo for etcd package.
-
TPA-358 Fix "Failed to commit files to git: b''" during configure
TPA-238 introduced support for initialising cluster directory as a git repository and above error was reported in some scenarios when running
tpaexec configure
command. There was an an earlier attempt to fix the same problem in 23.17; but apparently it still appeared in some cases. -
TPA-403 Respect
generate_password: false
setting for postgres_users when generating passwords. Without the fix, TPA would generate and overwrite the user password -
Fix volume map creation on aws to take account of region. In v23.18, aws clusters in regions other than eu-west-1 would fail with error messages mentioning '/dev/sdf'.
-
TPA-316 Support replica setup using pg_basebackup instead of repmgr
TPA now uses pg_basebackup for initial replica creation instead of repmgr, except for postgresql versions before 12.
-
TPA-101 Support deploying to SLES 15
Pass
--os SLES
totpaexec configure
to deploy to SLES.The M1 and PGD-Always-ON architectures are supported on all platforms.
Creation of local repositories (and therefore air-gapped installation) is not yet supported on SLES
-
TPA-412 Support deploying to RHEL 9
-
TPA-418 Minor version upgrade support for PGD 5
-
TPA-425 Improve tests run as part of
tpaexec test
-
TPA-101 Build packages to run TPA on SLES 15
-
Various documentation updates
-
TPA-439 Don't try to use 2q repositories on unsupported distributions
-
TPA-443 Install server packages for pg_receivewal on older epas
On barman servers, we need to install the postgresql server package for certain flavour/version/os combinations so that the pg_receivewal binary will be present. This fixes the logic to include the case of epas version < 13.
-
TPA-448 Fix device lookup failures on AWS
This fixes intermittent failures to create symlinks to block devices on AWS hosts, which manifested as successful provision followed by failing deployment.
-
TPA-383 Require --pgd-proxy-routing global|local to be specified at configure time for PGD-Always-ON clusters
This option determines how PGD-Proxy instances will route connections to a write leader. Local routing will make every PGD-Proxy route to a write leader within its own location (suitable for geo-sharding applications). Global routing will make every proxy route to a single write leader, elected amongst all available data nodes across all locations (i.e., all pgd-proxy instances will be attached to the top-level node group).
(This option entirely replaces the earlier --active-locations option, and also resolves some problems with the earlier top-level routing configuration.)
-
TPA-102 Support deploying to Ubuntu 22.04
TPA can now provision and deploy nodes running Ubuntu 22.04 ("Jammy Jellyfish") on either docker containers or AWS.
-
Update AWS AMIs for RHEL7 and RHEL8
-
Documentation improvements
-
TPA-404 Don't remove groups from an existing postgres user
-
Fix
Failed to commit files to git: b''
error fromtpaexec configure
; if the commit fails, the correct error message will now be shown -
TPA-416 Correctly sanitise subgroup names
If subgroup names contain upper-case letters, lowercase them rather than replacing them with underscores.
-
TPA-415 Ensure Postgres is correctly restarted, if required, after CAMO configuration
-
TPA-400 Ensure etcd config changes are idempotent
Enforce an ordering on the list of etc nodes and create data files with correct permissions, so that etcd doesn't get restarted unnecessarily on second and subsequent deployments.
-
TPA-372 Use a single location by default for PGD-Always-ON clusters
The default PGD-Always-ON cluster will now have one location with an associated subgroup containing 2 data nodes and 1 witness node.
-
TPA-370 Run pgd-proxy on data nodes by default
Adopt the old
--cohost-proxies
behaviour by running pgd-proxy on data nodes by default.Add a new option:
--add-proxy-nodes-per-location N
which will create separate proxy instances. -
TPA-371 Add a witness node automatically if
--data_nodes_per_location
is even and print a warning if you specify a cluster with only two locationsRename
--add-witness-only-location
back to--witness-only-location
because we're NOT adding a location, but merely designating an already-named (in--location-names
) location as a witness-only one.
-
TPA-368 Require both Postgres flavour and version to be specified explicitly at
tpaexec configure
timeHere are some examples:
- --postgresql 14
- --edbpge 15
- --epas 15 --redwood
- --postgresql --postgres-version 14
-
TPA-385 Improve both documentation and code around the use of the various different supported EDB software repositories
-
TPA-374 Don't include PGDG repository by default for PGD-Always-ON clusters
-
TPA-318 Use EFM by default to manage failover with EPAS
-
TPA-378 Do not install pglogical for M1 architecture by default
- Update includes changes to dependency mappings
- TPA-365 Don't set edb_repositories for non-PGD5 clusters
- TPA-360 Use multi-line BDR DCS configuration in HARP's config.yml
-
TPA-362 Don't enable old EDB repo with PGD-Always-ON and
--epas
-
TPA-363 Fix error with PGD-Always-ON and
--postgres-version 15
-
TPA-180, TPA-342 Introduce full support for PGD5, including CAMO configuration support based on commit scopes
-
Introduce support for EDB Postgres Extended repository and packages
-
TPA-270 Preliminary support for configuring multi-region AWS clusters
Multi-region clusters require manual setup of VPCs and VPC peering, and editing config.yml to ensure subnets do not overlap.
-
Enable proxy routing (and, therefore, subgroup RAFT) automatically for --active-locations, and remove the configure option to enable subgroup RAFT globally
-
TPA-327 Ensure the EDB_SUBSCRIPTION_TOKEN is not logged
-
TPA-303 Allow the user to suppress addition of the products/default/release repo to tpa_2q_repositories
-
TPA-359 Ensure that nodes subscribe to bdr_child_group, if available
In clusters with multiple subgroups, TPA did not expect instances to be subscribed to the replication sets for both the top group and the subgroup, so it would incorrectly remove the latter from the node's subscribed replication sets.
-
TPA-354 Fail reliably with a useful error if Postgres doesn't start
Due to an Ansible bug, the deployment would not fail if Postgres did not start on some instances, but did start on others (e.g., due to a difference in the configuration). Continuing on with the deployment resulted in errors when trying to access
cluster_facts
for the failed hosts later. -
Don't call bdr.alter_node_replication_sets() on witnesses for BDR 4.3+
This adjusts to a new restriction in BDR versions where witness nodes are not handled with a custom replication set configuration.
-
TPA-174, TPA-248 Replace harcoded "barman" references to enable use of the barman_{user,group} settings to customise the barman user and home directory
-
TPA-347 Add shared_preload_libraries entries, where appropriate, for extensions mentioned under postgres_databases[*].extensions
-
TPA-198 Ensure that pgaudit does not appear before bdr in shared_preload_libraries (to avoid a known crash)
-
Fix syntax error (DSN quoting) in pgd-cli config file
-
Sort endpoints in pgd-proxy config to avoid file rewrites
This will likely require a pgd-proxy restart on the next deploy (but it will avoid unnecessary future rewrites/restarts on subsequent deploys).
-
Fix an error while installing rsync from a local-repo on RH systems
-
Fix an error with Apache WSGI module configuration for PEM 9 on Debian systems
-
Don't remove the bdr extension if it has been created on purpose, even if it is unused.
-
TPA-180 Introduce experimental support for PGD-Always-ON architecture (to be released later this year).
PGD-Always-ON architecture will use the upcoming BDR version 5. Initial support has been added for internal purposes and will be improved in upcoming releases.
-
TPA-349 Bump dependency versions
Bump cryptography version from 38.0.4 to 39.0.0
Bump jq version from 1.3.0 to 1.4.0
-
TPA-345 Change TPAexec references to TPA in documentation.
Update the documentation to use 'TPA' instead of 'TPAexec' when referring to the product.
- TPA-161 Introduce
harp_manager_restart_on_failure
setting (defaults to false) to enable process restart on failure for the harp-manager systemd service
-
TPA-281 Delete FMS security groups when deprovisioning an AWS cluster
Fixes a failure to deprovision a cluster's VPC because of unremoved dependencies.
-
TPA-305 Add enterprisedb_password to pre-generated secrets for Tower
-
TPA-306 Prefer PEM_PYTHON_EXECUTABLE, if present, to /usr/bin/python3
Fixes a Python module import error during deployment with PEM 9.0.
-
TPA-219 Make pem-agent monitor the bdr_database by default on BDR instances
-
TPA-301 Fix auto-detection of cluster_dir for Tower clusters
When setting cluster_dir based on the Tower project directory, we now correctly check for the existence of the directory on the controller, and not on the instances being deployed to.
-
TPA-283 Add dependency on psutil, required for Ansible Tower.
-
TPA-278 Remove "umask 0" directive from rsyslog configuration, which previously resulted in the creation of world-readable files such as rsyslogd.pid .
-
TPA-291 Respect the postgres_package_version setting when installing the Postgres server package to obtain pg_receivewal on Barman instances.
-
TPA-18 Support Ansible Tower 3.8
This release supports execution of
deploy.yml
(only) on abare
cluster (i.e., with existing servers) through Ansible Tower 3.8.Install TPAexec on the Tower server and run
tpaexec setup
to create a virtual environment which can be used in Tower Templates to run TPAexec playbooks.Use the
--use-ansible-tower
and--tower-git-repository
configure options to generate a Tower-compatible cluster configuration.For details, see Ansible Tower.
-
TPA-238 Initialise the cluster directory as a git repository
If git is available on the system where you run TPAexec,
tpaexec configure
will now initialise a git repository within the cluster directory by default. If git is not available, it will continue as before.To avoid creating the repository (for example, if you want to store the cluster directory within an existing repository), use the
--no-git
option.
-
TPA-234 Support the community release of Ansible 2.9
TPAexec used to require the 2ndQuadrant/ansible fork of Ansible 2.9. In this release, you may instead choose to use the community release of Ansible with the
tpaexec setup --use-community-ansible
.For now, the default continues to be to use 2ndQuadrant/ansible. This will change in a future release; support for 2ndQuadrant/ansible will be dropped, and Ansible will become the new default.
-
TPA-209 Accept
--postgres-version 15
as a validtpaexec configure
option, subsequent to the release of Postgres 15 -
TPA-226 Accept IP addresses in the
--hostnames-from
fileFormerly, the file passed to
tpaexec configure
was expected to contain one hostname per line. Now it may also contain an optional IP address after each hostname. If present, this address will be set as theip_address
for the corresponding instance in config.yml.(If you specify your own
--hostnames-from
file, the hostnames will no longer be randomised by default.) -
TPA-231 Add a new bdr-pre-group-join hook
This hook is executed before each node joins the BDR node group. It may be used to change the default replication set configuration that TPAexec provides.
-
TPA-130 Use the postgresql_user module from community.postgresql
The updated module from the community.postgresql collection is needed in order to correctly report the task status when using a SCRAM password (the default module always reports
changed
). -
TPA-250 Upgrade to the latest versions of various Python dependencies
-
TPA-220 Ensure LD_LIBRARY_PATH in .bashrc does not start with ":"
-
TPA-82 Avoid removing BDR-internal ${group_name}_ext replication sets
-
TPA-247 Fix "'str object' has no attribute 'node_dsn'" errors on AWS
The code no longer assigns
hostvars[hostname]
to an intermediate variable and expects it to behave like a normal dict later (which works only sometimes). This fixes a regression in 23.6 reported for AWS clusters with PEM enabled, but also fixes other similar errors throughout the codebase. -
TPA-232 Eliminate a race condition in creating a symlink to generated secrets in the inventory that resulted in "Error while linking: [Errno 17] File exists" errors
-
TPA-252 Restore code to make all BDR nodes publish to the witness-only replication set
This code block was inadvertently removed in the v23.6 release as part of the refactoring work done for TPA-193.
-
TPA-21 Use boto3 (instead of the unmaintained boto2) AWS client library for AWS deployments. This enables SSO login and other useful features.
-
TPA-202 Add harp-config hook. This deploy-time hook executes after HARP is installed and configured and before it is started on all nodes where HARP is installed.
-
TPA-181 Set default python version to 2 on RHEL 7. Formerly, tpaexec could generate a config.yml with the unsupported combination of RHEL 7 and python 3.
-
TPA-210 Fix aws deployments using existing security groups. Such a deployment used to fail at provision-time but will now work as expected.
-
TPA-189 Remove group_vars directory on deprovision. This fixes a problem that caused a subsequent provision to fail because of a dangling symlink.
-
TPA-175 Correctly configure systemd to leave shared memory segments alone. This only affects source builds.
-
TPA-160 Allow version setting for haproxy and PEM. This fixes a bug whereby latest versions of packages would be installed even if a specific version was specified.
-
TPA-172 Install EFM on the correct set of hosts. EFM should be installed only on postgres servers that are members of the cluster, not servers which have postgres installed for other reasons, such as PEM servers.
-
TPA-113 Serialize PEM agent registration. This avoids a race condition when several hosts try to run pemworker --register-agent at the same time.
- TPA-81 Publish tpaexec and tpaexec-deps packages for Ubuntu 22.04 Jammy
- TPA-26 Support harp-proxy and harp-manager installation on a single node. It is now possible to have both harp-proxy and harp-manager service running on the same target node in a cluster.
- TPA-152 fix an issue with locale detection during first boot of Debian instances in AWS Hosts would fail to complete first boot which would manifest as SSH key negotiation issues and errors with disks not found during deployment. This issue was introduced in 23.3 and is related to TPA-38
- TPA-118 Exposed two new options in harp-manager configuration. The
first sets HARP
harp_db_request_timeout
similar to dcs request_timeout but for database connections and the secondharp_ssl_password_command
specifies a command used to de-obfuscate sslpassword used to decrypt the sslkey in SSL enabled database connection
- TPA-117 Add documentation update on the use of wildcards in
package_version
options in tpaexec config.yml. This introduces a warning that unexpected package upgrades can occur during adeploy
operation. See documentation intpaexec-configure.md
for more info - TPA-38 Add locale files for all versions of Debian, and RHEL 8 and
above. Some EDB software, such as Barman, has a requirement to set the
user locale to
en_US.UTF-8
. Some users may wish to also change the locale, character set or language to a local region. This change ensures that OS files provided by libc are installed on AWS instances during firstboot using user-data scripts. The default locale isen_US.UTF-8
. Seeplatform_aws.md
documentation for more info - TPA-23 Add log config for syslog for cluster services Barman, HARP,
repmgr, PgBouncer and EFM. The designated log server will store log
files received in
/var/log/hosts
directories for these services - TPA-109 Minor refactoring of the code in pgbench role around choosing lock timeout syntax based on a given version of BDR
- TPA-147 For clusters that use the source install method some missing packages for Debian and Rocky Linux were observed. Debian receives library headers for krb5 and lz4. On RedHat derived OSs the mandatory packages from the "Development Tools" package group and the libcurl headers have been added
- TPA-146 Small fix to the method of package selection for clusters installing Postgres 9.6
- TPA-138 Addresses a warning message on clusters that use the "bare" platform that enable the local-repo configure options. As the OS is not managed by TPAexec in the bare platform we need to inform the user to create the local-repo structure. This previously caused an unhandled error halting the configure progress
- TPA-135 When using
--use-local-repo-only
with the "docker" platform and the Rocky Linux image initial removal of existing yum repository configuration on nodes would fail due to the missing commandsfind
andxargs
. This change ensures that if thefindutils
package exists in the source repo it will be installed first - TPA-111 Remove a redundant additional argument on the command used to
register agents with the PEM server when
--enable-pem
option is given. Previously, this would have caused no problems as the first argument, the one now removed, would be overridden by the second - TPA-108 Restore SELinux file context for postmaster symlink when Postgres is installed from source. Previously, a cluster using a SELinux enabled OS that is installing postgres from source would fail to restart Postgres as the systemd daemon would be unable to read the symlink stored in the Postgres data bin directory. This was discovered in tests using a recently adopted Rocky Linux image in AWS that has SELinux enabled and in enforcing mode by default
- Add support for Postgres Backup API for use with Barman and PEM.
Accessible through the
--enable-pg-backup-api
option. - SSL certificates can now be created on a per-service basis, for
example the server certificate for Postgres Backup API proxy service.
Certificates will be placed in
/etc/tpa/<service>/<hostname>.cert
These certificates can also be signed by a CA certificate generated for the cluster. - Placement of Etcd for the BDR-Always-ON architecture
When using 'harp_consensus_protocol: etcd', explicitly add 'etcd' to
the role for each of the following instances:
- BDR Primary ('bdr' role)
- BDR Logical Standby ('bdr' + 'readonly' roles)
- only for the Bronze layout: BDR Witness ('bdr' + 'witness' roles)
- only for the Gold layout: Barman ('barman' role) Credit: Gianni Ciolli gianni.ciolli@enterprisedb.com
- Replace configure argument
--2q
with--pgextended
to reflect product branding changes. Existing configuration will retain expected behaviour. - Improve error reporting on Docker platform compatibility checks when using version 18 of docker, which comes with Debian old stable.
- Add some missing commands to CLI help documentation.
- Improved error reporting of configure command.
- Add initial support for building BDR 5 from source. Credit: Florin Irion florin.irion@enterprisedb.com
- Changes to ensure ongoing compatibility for migration from older versions of Postgres with EDB products.
- Fixed an issue which meant packages for etcd were missing when using the download-packages command to populate the local-repo.
- Fixed an issue affecting the use of efm failover manager and the selection of its package dependencies
This release requires you to run tpaexec setup
after upgrading (and
will fail with an error otherwise)
In earlier versions, running tpaexec deploy
could potentially upgrade
installed packages, unless an exact version was explicitly specified
(e.g., by setting postgres_package_version). However, this was never a
safe, supported, or recommended way to upgrade. In particular, services
may not have been safely and correctly restarted after a package upgrade
during deploy.
With this release onwards, tpaexec deploy
will never upgrade installed
packages. The first deploy will install all required packages (either a
specific version, if set, or the latest available), and subsequent runs
will see that the package is installed, and do nothing further. This is
a predictable and safe new default behaviour.
If you need to update components, use tpaexec update-postgres
. In this
release, the command can update Postgres and Postgres-related packages
such as BDR or pglogical, as well as certain other components, such as
HARP, pgbouncer, and etcd (if applicable to a particular cluster).
Future releases will safely support upgrades of more components.
-
Run "harpctl apply" only if the HARP bootstrap config is changed
WARNING: This will trigger a single harp service restart on existing clusters when you run
tpaexec deploy
, because config.yml is changed to ensure that lists are consistently ordered, to avoid unintended changes in future deploys -
Add
tpaexec download-packages
command to download all packages required by a cluster into a local-repo directory, so that they can be copied to cluster instances in airgapped/disconnected environments. See air-gapped.md and local-repo.md for details -
Require
--harp-consensus-protocol <etcd|bdr>
configure option for new BDR-Always-ON clustersTPAexec no longer supplies a default value here because the choice of consensus protocol can negatively affect failover performance, depending on network latency between data centres/locations, so the user is in a better position to select the protocol most suitable for a given cluster.
This affects the configuration of newly-generated clusters, but does not affect existing clusters that use the former default of
etcd
without setting harp_consensus_protocol explicitly
-
Install openjdk-11 instead of openjdk-8 for EFM on distributions where the older version is not available
-
Accept
harp_log_level
setting (e.g., under cluster_vars) to override the default harp-manager and harp-proxy log level (info) -
Configure harp-proxy to use a single multi-host BDR DCS endpoint DSN instead of a list of individual endpoint DSNs, to improve resilience
-
Omit extra connection attributes (e.g., ssl*) from the local (Unix socket) DSN for the BDR DCS for harp-manager
-
Ensure that harp-manager and harp-proxy are restarted if their config changes
-
Fix harp-proxy errors by granting additional (new) permissions required by the readonly harp_dcs_user
-
Disable BDR4 transaction streaming when CAMO is enabled
If bdr.enable_camo is set, we must disable bdr.default_streaming_mode, which is not compatible with CAMO-protected transactions in BDR4. This will cause a server restart on CAMO-enabled BDR4 clusters (which could not work with streaming enabled anyway).
-
Add
--enable-local-repo
configure option to ship packages that you provide (in cluster_dir/local-repo) to a new local package repository on each instance in the cluster -
Add
--use-local-repo-only
option to create a local repo as described above and also disable all other repositories on the instance. In this case, the local repo must contain all packages required for deployment, starting with rsync and Python -
Change the default HARP v2 consensus protocol from etcd to bdr
This does not affect existing clusters that are using etcd (even if they do not have harp_consensus_protocol set explicitly)
-
Require Docker CE v20.10+
There are a number of problems on older versions of Docker that we can neither fix, nor work around. We now require the latest major release of Docker CE.
-
Support running pgbouncer in front of harp-proxy on the same instance (by setting
role: [harp-proxy, pgbouncer]
on the instance)This allows applications to connect to harp-proxy through pgbouncer, and is not the same thing as running harp-proxy in pgbouncer mode, which involves harp-proxy connecting to Postgres through pgbouncer. (These two modes are mutually exclusive.)
-
Restart harp-proxy one by one on proxy instances
The earlier behaviour, which was to restart all harp-proxy services simultaneously if there was any configuration change, could lead to disruption in traffic routing
-
Wait for BDR to achieve RAFT consensus before running "harpctl apply"
-
Increase the default HARP DCS request timeout to 6s
Note: this will cause a harp restart on deploy.
-
Change the default M1 configuration to not use openvpn
The functionality is still supported, if you need to use it, but now you have to set
vpn_network
and assign anopenvpn-server
instance explicitly. Does not affect existing clusters. -
Add
bdr_camo_use_raft_for_local_mode: [true|false]
setting to configure the RAFT fallback mode for CAMO pairs in BDR 4.1 (only) -
Install edb-pgd-cli and edb-bdr-utilities packages by default on all BDR (4.1 and above only) instances
-
Check that TPA_2Q_SUBSCRIPTION_TOKEN is set when needed
Fixes a 403 error during the repository in clusters configured to use Postgres Extended (--2q) without setting --2Q-repositories and without providing a token.
-
Before restarting etcd, check endpoint health of etcd instances in the same harp_location only (since instances in other locations may not be reachable)
-
Create a long-lived S3 bucket by default for new AWS clusters
Earlier versions used a hardcoded default S3 bucket, which was not accessible outside an internal AWS account, requiring you to always set
cluster_bucket
explicitlyThe name of the automatically-created bucket is based on your AWS username, and you will be prompted to confirm that you want to create it. It will not be removed when you deprovision the cluster (this means the bucket will be reused for any clusters you create, which we recommend)
To use an existing S3 bucket, use the
--cluster-bucket name-of-bucket
configure option to setcluster_bucket: name-of-bucket
in config.yml (as before, existing S3 buckets will never be removed) -
Make
--layout
a required parameter for configuring a new BDR-Always-ON cluster. Previously it would useplatinum
as default -
Remove support for generating configurations for the BDR-Simple testing architecture
(Existing clusters are unaffected by this change)
-
Remove support for the LXD and Vagrant platforms
(VMs provisioned with Vagrant can still be used as bare instances in TPAexec if required; existing Vagrantfiles will also continue to work)
-
Introduce alpha support for Postgres Enterprise Manager (PEM)
(Not recommended for production deployments yet)
-
Set default compaction configuration for etcd keyspace to keep 10 (ten) revisions
Earlier versions did not set default compaction settings. Since etcd keeps an exact history of its keyspace, this history should be periodically compacted to avoid performance degradation and eventual storage space exhaustion
-
Ensure that etcd restart happens on one instance at a time
(When an etcd cluster is already serving as the consensus layer for HARP, we can't afford to restart etcd on all instances simultaneously, because that will cause HARP to become unhappy and break routing)
- Correctly deprovision any internet gateway created along with a VPC for an AWS cluster (earlier, deprovision would fail when trying to remove the VPC)
- Correct file copy path during tpaexec setup for dynamic inventory scripts
-
Use correct Ansible release tarball download location (to fix 404 errors while downloading Ansible during
tpaexec setup
) -
Ensure that the bundled ansible from tpaexec-deps is used, if present (workaround for a pip limitation)
-
Ensure that we install a Postgres-specific logrotate configuration only on Postgres instances
-
Improve automated testing
-
Introduce vulnerability scanning in CI
-
Add support for harp_dcs_client_dsn_attributes setting to pass extra connection parameters for harp-proxy's connection to BDR as DCS
-
Use
harp_listen_address
as HARP2 listen address to override the default, which is to listen on all interfaces -
Fix proxy start error by granting required execute privileges to harp_dcs_user
-
Allow the use of FQDNs for Docker containers
-
Ensure that ping is installed on EFM nodes for EFM internal use
-
Add
Rocky
to--os
available option list for AWS clusters -
Use latest AMIs for Ubuntu and Debian on aws platform
-
Bump EFM's default version to 4.4
-
Miscellaneous documentation improvements
-
Fix repmgr source builds switching from
git://
tohttps://
for repository links since github stopped supporting the former -
Fix "module 'jinja2.ext' has no attribute 'with_'" errors from inventory script with recent versions of Jinja2
-
Update hostname validation to be RFC compliant
-
Deploy harp-proxy with the "builtin" proxy instead of pgbouncer
This change applies to existing clusters, which will be transparently reconfigured to use the new proxy mode when you run
tpaexec deploy
.Future versions of harp will no longer support embedded pgbouncer, but for now, you can set
harp_proxy_mode: pgbouncer
explicitly to keep using it. -
Create a new harp-postgres.target that stops/starts both Postgres and harp-manager together (i.e.,
systemctl restart harp-postgres.target
will correctly stop harp-manager, restart postgres, and then start harp-manager)
-
Remove "pwgen" as a dependency for the tpaexec package
-
Add archive-logs command to fetch logs from cluster instances
-
Set
postgres_port
correctly when granting permissions to the harp_dcs_user -
Use the correct Unix socket path to connect to EPAS even when using a non-EPAS libpq or vice versa
-
Fix a problem with adding new BDR instances in a different node group, which would cause the "Override first_bdr_primary if required" task to fail with an "undefined variable" error
-
Fix conninfo generation to not duplicate dbname/user parameters (a cosmetic problem, but potentially confusing)
-
Fix an error about
private_ip
not being defined when generating efm.properties -
Generate harp configuration only on instances where we install harp
-
Ensure that backups taken during the initial deploy are fully consistent by using
barman backup --wait
- Upgrade ansible to v2.9
- Added support for the Alma Linux distribution
- Modify systemd service files for postgres on Harp enabled hosts that require alternative user accounts. Always run Harp services as the same user as Postgres, regardless of the flavour in use.
-
Fix a problem that caused the ec2 inventory to return "none" instead of a private IP address for EC2 instances with
assign_public_ip: no
; note that you must also haveec2_instance_reachability: private
set for such clusters -
Fix OS detection for Rocky Linux when used on non-docker platforms. This previously affected the host name change during deployment. We now enforce the use of systemd to change host names.
- Unpublished version
- Change the default image on Docker and Vagrant to rockylinux:8 (since centos:8 is now EOL). Please remove your existing tpa/redhat images to rebuild using the new base image
- Allow harp-proxy to use a separate
harp_dcs_user
to connect to BDR when usingharp_consensus_protocol: bdr
-
Fix an "nodename is tagged as witness for nodename, but is registered as a primary already" error from repmgr on BDR witness instances
-
Install and start harp only on primary candidates and proxy instances, and exclude subscriber-only nodes from the DCS endpoint list
-
Run HARP v2 as
enterprisedb
user when deployed with EPAS -
Per instance use of
listen_address
andlisten_port
in HARP v2 to cater to multi-proxy setup
-
Default values for
request_timeout
andwatch_poll_interval
in HARP v2 config should not use quotes -
Default to products/bdr_enterprise_3_7/release repository when
postgresql_flavour
is '2q' for BDR architectures.
- Fixed a harp config defect where listen_address is not always set to the proxy hostname.
-
Moved listen_addr and listen_port in harp2 configuration files
-
Add hook to prevent removal of pgbouncer user from database
- Rsyslog log-server not sending/storing postgres logs as intended
- Ensure correct package name for repmgr on RedHat from BDR Enterprise 2q repositories is used. This caters for a fairly small corner case therefore previously configured clusters where this is seen should be refreshed manually if a package conflict is seen. This can be done by removing any packages matching "repmgr" before rerunning deploy.
-
Revise max_worker_processes and set a reasonable floor value of 16. Normally this value is calculated using the number of postgres instances as a base value, the new base default is now used if this results in a lower value than the floor.
-
Update Training architecture to current conventions
-
Make global lock timeouts configurable for pgbench init
-
Expose additional config for harp template files, so they can be customised by the user
-
Ensure permissions for rsyslog managed postgres log is correct. On existing clusters built with Ubuntu OS rsyslog is set to drop root privileges after start up. This makes it impossible for log files to be owned by another user. In TPAexec postgres log files are owned by the user
postgres
. This change will ensure existing log files are owned by this user as well as disabling the privilege drop configuration in rsyslog. -
Fix case where zero postgres instances exist. If no instances in a cluster have a role which would mean postgres wouldn't be installed a "deploy" action will complete successfully. This was not the case previously.
-
Install HARP v2 packages from the products/harp/release repository (so that it no longer a separate EDB_REPO_CREDENTIALS_FILE to install)
-
Install the latest available haproxy version by default (set haproxy_package_version explicitly to override)
-
Use harp-proxy instances instead of haproxy instances in the default BDR-Always-ON configuration; existing configurations are unaffected
-
Increase default EFM version to v4.2
- Set max_worker_processes to a minimum of 16 (fixes an error that caused EPAS to not start with the default dbms_aq.max_workers)
-
Update the names of harp-related packages (now available in the EDB repository, i.e., {apt,yum}.enterprisedb.com)
-
Use the new
pgdgNN-debuginfo
repositories (fixes errors with missing debuginfo packages for Postgres) -
Use HARP as default failover manager for BDR-Always-ON architecture
-
Documentation improvements, notably for BDR Always-ON and Barman
- Fix incorrect default value for
enable_camo
-
Add new bronze/silver/gold/platinum layouts for BDR-Always-ON, selectable using the
--layout gold
configure option -
Add experimental HARP v2 support with any BDR-Always-ON layout
-
Add declarative configuration for BDR witnesses (just set the instance's role to bdr+witness)
-
Avoid repeated expensive invocations of semanage/restorecon for custom Postgres directory locations (e.g., tablespaces)
-
Support newly-published repmgr packages for EPAS; this means you no longer have to deploy with
repmgr_installation_method: src
-
Allow setting
barman_archiver: on
for an instance to enable WAL archiving to Barman with a suitable defaultarchive_command
-
Support deployment of BDR v4 (still experimental), including on-the-fly (symmetric) CAMO configuration changes
-
Allow
enable_camo
to be set (earlier, it was always "on" by default if CAMO was enabled)
-
Fix handling of the default value of shared_preload_libraries on EPAS installations
-
Fix some minor breakage related to the change in the location of the documentation, notably
tpaexec info architectures
andtpaexec info platforms
-
Fix a provision-time error from
find_replica_tablespace_mismatches
for Docker instances with user-definedvolumes
entries -
Fix the
--enable-camo
option to correctly generate CAMO partner annotations on BDR instances -
Fix rsyslog configuration to set logfile ownership to root/root (and not the postgres user, which may not exist on the log server)
-
Don't set
operator_precedence_warning
for Postgres v14+
-
Accept optional
postgres_wal_dir
setting to determine location of pg_wal during initial deployment; if there is a volume marked withvolume_for: postgres_wal
, it will be used by default. -
Support declarative configuration of
postgres_tablespaces
; also, any volumes marked withvolume_for: postgres_tablespace
will be used to set up tablespaces by default. -
Support declarative configuration of BDR subscriber-only groups: any BDR instance with 'subscriber-only' in its role will join a default cluster-wide subscriber-only node group (but more complex topologies are possible by explicitly setting
bdr_child_group
to point to any subscriber-only node group declared inbdr_node_groups
).
-
Install Postgres v13 and BDR v3.7 by default on new clusters
-
Add preliminary support for Oracle Linux 7 and 8 by treating it exactly the same as RHEL 7 or 8
-
Update EC2 AMIs to the latest available versions
-
Fix errors like "Repository 'epel' is missing name in configuration" by ensuring we only edit existing files to add
exclude
entries, and not create empty .repo and other YUM-related configuration files -
Fix error about upstream_primary being undefined during template expansion of efm.properties on EFM witnesses
-
Fix "Unrecognised host=x in primary_conninfo" error during deployment after running
efm promote
(by accepting and translating IP addresses in addition to hostnames) -
Fail early if you run
tpaexec deploy
without runningtpaexec provision
first -
Fail with a sensible error message if Python installation fails
- Minor documentation improvements
- Delay granting roles to users until after extensions are created so all the dependencies for role assignments are met. This was a recent regression.
- Allow Postgres 13 and BDR3 as a supported combination
-
Correctly create the bdr extension in the default 'edb' database on EPAS
-
Set up /etc/hosts to use openvpn IPs for cluster instances when openvpn is used in the cluster. This used to work correctly, but was a recent regression.
-
Remove bdr extension from databases other than bdr_database where it is unused (it used to be created in template1 and inherited by other databases earlier, but the BDR developers advised against this)
-
Allow
postgres_databases
to specify extensions and languages to create within a single database (and this mechanism is now used to create the bdr extension only in bdr_database) -
Improve installation instructions
- Install tmux instead of the deprecated screen on RHEL8 (though the screen package is available in EPEL, as before)
-
Improve pgbouncer and HAProxy deployment to support EPAS flavor.
-
Update documentation to use latest BDR Always-ON architecture diagram
-
Install under /opt/EDB/TPA (with a symlink from /opt/2ndQuadrant/TPA for backwards compatibility)
-
Delay the activation of the
synchronous_standby_names
setting until all expected replicas are running (but this applies only if you set it directly undervars
, and not underpostgres_conf_settings
)
-
Improve handling of custom commands by
tpaexec help
-
Improve the build process for
tpa/xxx
docker images -
Improve installation instructions, especially for MacOS X users
-
Enable etcd consensus layer support for HARP on RHEL/CentOS 7, with support for other platforms in development
-
Avoid generating duplicate entries in /etc/hosts when changing the IP addresses for existing instances
-
Set
server_login_retry
to 0 by default for pgbouncer to avoid a 15s delay during failover
-
Fix "Cannot find a valid baseurl for repo: pgdg94" errors after the upstream removal of the pgdg94 repository
-
Install edb-asNN-server package to obtain pg_receivewal when using Barman with EPAS (this is a workaround until pg_receivewal is made available with the client package, as with Postgres)
-
Fix errors about haproxy_backend_servers not being defined on clusters without haproxy instances
-
Fix some errors during deployment when TPAexec is installed in a path that contains spaces
-
Fix "template error while templating string" error when installing EPAS on Debian
This release has experimental support for deploying EPAS (EDB Postgres Advanced Server) for internal use, and the next release will make this feature generally available.
- The new
tpaexec pool-disable-server
andpool-enable-server
commands can be used to temporarily remove a BDR server from the HAProxy server pool for maintenance (e.g., rehydration) and add it back afterwards (see docs/tpaexec-server-pool.md for details). This process works like rolling updates by default, and will wait for any active sessions to end and new connections to be routed to another server by pgbouncer and haproxy.
-
Adapt to new repository filenames/section names CentOS 8 (fixes "Cannot find a valid baseurl for repo: AppStream" errors)
-
Set
ssl_min_protocol_version = 'TLSv1.2'
wherever supported (Postgres 12 and above, or 2ndQPostgres 11 and above) -
Improve installation instructions, especially for MacOS X users
-
Make
tpaexec relink
add links from an existing cluster to any new commands and tests that are applicable to its architecture
-
Stop postgres messages from falling through to be logged to /var/log/syslog
-
Fix incorrect detection of PGDATA and Postgres instance roles during rehydration, which led to failures while running
initdb
orrepmgr standby clone
or creating users (spurious failures, in that running deploy again would fix the problem) -
Fix errors about
my_hosts_lines
and other variables being undefined when runningtpaexec rehydrate
-
Reject empty lines in
--hostnames-from
input file (which would result in "list object has no element 2" exceptions fromtpaexec configure
) -
Fix default systemd target for docker containers, so that restarting the container correctly restarts all of its services
-
Specify postgres_host and postgres_port when running pgbench
-
Pin barman-cli/python3-barman to 2ndQuadrant repositories
-
Accept
repmgr_conf_settings
to append extra lines to repmgr.conf -
Improve TPA_DIR detection when realpath(1) is not installed
-
Use pkill instead of killall, which is deprecated
-
Allow for
public_ip
to be set tonull
rather than undefined (to accommodate default ec2.py output for instances with no public IP) -
Always set TMPDIR when calling git clone (to avoid "permission denied" errors when cloning git submodules)
-
Ensure barman_home exists if it is set to a non-standard location
-
On AWS EC2 instances, create a symbolic link from /usr/local/bin/aws to the installed awscli executable (for use in scripts)
-
Create the builtin tpa/xxx docker images in a single step, rather than building a -base image first (but custom two-stage builds are still supported)
-
Accept
postgres_hba_local_auth_method: md5
setting to replace the defaultlocal all all peer
line in pg_hba.conf -
Use latest PGDG YUM repo RPMs from /pub/repos/yum/reporpms
-
Remove deprecated replication_type setting from repmgr.conf
-
Exclude python3-barman package from PGDG repository (we should always use the version from the 2Q repositories)
-
Improve config.yml validation
-
Fix a problem with cloning an HTTPS repository with ssh submodules that caused
fatal: cannot exec '/tmp/tmpXXXXXXXX': Permission denied
errors on Docker containers (e.g., when updating pglogical_dump) -
Fix python2.7 interpreter discovery on Ubuntu 18.04/bionic: if preferred_python_interpreter was unset, the earlier code would install Python 3 but try to use Python 2
-
Fix a problem with running pgbouncer and Postgres on the same host, where pgbouncer was not able to authenticate via md5
-
Ensure
tpaexec configure xyz/
does not create config.yml with an empty cluster_name -
Set wal_keep_size instead of wal_keep_segments for Postgres 13+
-
Disable unattended-upgrades on Debian and Ubuntu
-
Improve documentation (under "Customisations", start with "Cluster configuration" and "Instance configuration")
-
Support setting
password_encryption: scram-sha-256
(default for new clusters, but existing clusters will remain unchanged unless you set the variable explicitly) -
Add new
tpaexec show-password /path/to/cluster username
andtpaexec store-password /path/to/cluster username [--random]
commands to manage passwords for postgres_users -
Add a
postgres_locale
setting, defaulting to the target instance's LC_ALL/LANG setting (or en_US.UTF-8 otherwise), which is used to set the initdb-time default for the cluster -
Require that the BDR database have the same collation (LC_COLLATE) across all instances in the same bdr_node_group
-
Add a
manage_ssh_hostkeys
variable for bare instances (default: no) that controls the installation of generated host keys and known_hosts entries on the cluster (see docs/platform-bare.md for details) -
Default to using
private_ip
for communication between instances in the cluster (e.g., for Postgres replication and backups) while using thepublic_ip
to access the instances during deployment, for bare instances with bothprivate_ip
andpublic_ip
set -
Add support for building Docker clusters from source using bind-mounted --local-source-directories and a shared ccache
-
Improve deployment speed in various ways
-
Support pglogical v2 publication/subscription configuration
-
Use volatile subscriptions by default on docker containers
-
Add eu-north-1 to aws_known_regions
-
Add a
preload_extensions
list to declare extensions that need an entry in shared_preload_libraries if included in postgres_extensions -
Don't uninstall any packages by default (default_unwanted_packages)
-
Account for grubby storing kernelopts in /boot/grub2/grubenv
-
Ensure Postgres is restarted when new packages are installed
-
Move BDR-specific initialisation code into pgbench/init; callers can now include pgbench/init directly from their own hooks/commands/tests for BDR clusters, without having to duplicate lock timeout management from pgbench-bdr.yml
-
Only add required lines to /etc/hosts, rather than generating the file from scratch
-
Accept optional per-volume
fstype
,fsopts
,mountopts
,readahead
,owner
,group
,mode
vars for volumes -
Adapt to grubby storing kernelopts in /boot/grub2/grubenv on RHEL8
-
Improve handling of LUKS-encrypted volumes
-
Generate a valid Vagrantfile even for hostnames with hyphens
-
Patch
TypeError: a bytes-like object is required, not 'str'
errors when using Boto with an https_proxy set (runtpaexec setup
) -
Disable pgbench test for BDR v1/v2 clusters
-
Fix haproxy syslog logging configuration
-
Fix "ReadOnlySqlTransaction" error on replicas from postgres/cleanup
-
Fix "max_worker_processes" error during rehydration of replicas
- Accept
TPA_GIT_CREDENTIALS=username:access_token
in the local environment to clone https:// repository URLs when building from source (+TPA_GIT_CREDENTIAL_STORE=/path/to/.gitcredentials
)
-
Add support for multiple distributions on Docker via
tpaexec configure … --os Debian/Ubuntu/RedHat
-
Complete support for RHEL/CentOS 8 across architectures
-
Allow setting
postgres_conf_dir
to separate configuration files from PGDATA -
Add support for HARP with BDR as the consensus mechanism
-
Add new
postgres_users
andpostgres_databases
settings to create users and databases during deployment -
Add declarative configuration for pglogical replication through
publications
andsubscriptions
oftype: pglogical
-
Add a
tpaexec relink
command to repair dangling symlinks into TPA_DIR from within a cluster directory -
Add many new and exciting default hostnames beginning with 'u'
-
Avoid running out of memory while setting SELinux context for PGDATA
-
Always prefer to install 2ndQuadrant barman packages on Debian/Ubuntu
-
Revert workarounds for problems with the PGDG yum repository that have been fixed upstream
-
Avoid installing pgbouncer from the EPEL repo because of a broken dependency on python-psycopg2
-
Fix some inconsistencies with --overrides-from that prevented certain generated settings from being overriden at configure time
- Fix "No commands may be run on the BDR supervisor database" during fact discovery on BDR v1/v2 clusters
-
Remove the CAMO2x2 architecture (use BDR-Always-ON instead)
-
Numerous internal improvements
-
Update default haproxy_package_version to 1.9.15
-
Disable invalid pgdg11-updates-debuginfo repository for RHEL8; deploy with
-e '{"postgres_debug_packages":{"postgresql":{"RedHat":[]}}}'
if required until the problem is fixed upstream -
Restore support for repmgr to create physical replicas in BDR clusters
-
Exclude psycopg2 packages from PGDG yum repositories
-
When adding a new instance to a BDR cluster, ensure that some other existing instance is marked as the first_bdr_primary; otherwise the new instance would not join the existing cluster (RT67887)
-
Create the pgbouncer schema on only one BDR instance, to avoid a DDL lock acquisition timeout during deployment
-
Generate a valid restore_command when multiple backup servers are specified for an instance
- The 'common' role has been removed, and its functionality absorbed into the 'sys' role
This release of TPAexec would have been v9.4, but has been renumbered in order to avoid any confusion with Postgres version numbers.
-
Adapt to various PGDG YUM repository layout changes and enable pgdg-common repository by default
-
Update expired 2ndQuadrant APT repository signing keys on existing Debian/Ubuntu clusters
-
Create unprivileged docker containers by default (but you can still set
privileged: yes
on the instance in config.yml) -
Add basic support for creating user-defined Docker networks and attaching containers to them
-
Calculate pgbouncer_max_client_conn based on max_connections
-
Fix python-psycopg2 vs python2-psycopg2 package conflict when installing barman-cli
-
Fix selinux dependency problems ("Failed to detect selinux python bindings")
-
Correctly handle
ssh_key_file: /path/to/id_xxx
as well asssh_key_file: ~/.ssh/id_rsa
settings in config.yml -
Ensure that pgbouncer.ini changes cause a restart when using
--tags pgbouncer
-
Avoid trying to create haproxy users when there are no haproxy instances in a cluster
-
Silence some inapplicable Ansible warnings
-
Fix ec2 inventory caching problem
-
Correctly bundle version-specific Python dependencies (e.g., MarkupSafe) in tpaexec-deps
-
Allow haproxy.cfg default-server/server options to be customised via new variables: haproxy_default_server_extra_options (for an haproxy instance) and haproxy_server_options (for a Postgres instance)
-
Allow pgbouncer_databases setting to include pool_size and other options without specifying a complete DSN
-
Rename haproxy_backends to haproxy_backend_servers (but the former name continues to be accepted for backwards compatibility)
-
Allow haproxy_bind_address to be changed
-
Add a new post-repo hook that is executed after package repositories are configured, but before packages are installed
- Fix problem in v9.2 with extra_postgres_extensions being undefined
This release requires tpaexec setup
to be rerun after installation.
-
Require Python 3.6+ on the machine running tpaexec
-
Optionally support Python 3 (
preferred_python_version: python3
) on target instances that run one of the following distributions:- Debian 9 (stretch)
- Debian 10 (buster)
- Ubuntu 16.04 (xenial)
- Ubuntu 18.04 (bionic)
-
Existing clusters continue to work unmodified with Python 2.7
-
Newly-configured clusters use Python 3 by default wherever available; set
preferred_python_version: python2
to undo this -
Running
tpaexec setup
will now create $TPA_DIR/tpa-venv (it is safe to remove the old tpa-virtualenv directory) -
Require 2ndQuadrant ansible to be installed via
tpaexec setup
, and ignore any other Ansible installation in $PATH -
Enable HTTP-based queue checks for haproxy if the Platypus extension is available on the backend Postgres servers (this fixes the SELinux limitation mentioned in the v9.1 release notes)
If you are using tpaexec v9.2 to upgrade an existing cluster running
BDR-EE 3.6.14 or earlier with 2ndQPostgres, you must first remove the
postgresql11-devel
package from target instances before you run
tpaexec update-postgres
. This is because the 3.6.15/3.6.16 stack
releases add an LLVM-related dependency (llvm-toolset-7-clang) that
cannot be satisifed by the default package repositories.
Instead of removing the package, yum install centos-release-scl
(on
CentOS) or yum-config-manager --enable rhel-server-rhscl-7-rpms
(on
RHEL) may be enough to make the update succeed even with
postgresql11-devel installed.
We expect to fix this problem in a future release of the BDR stack.
This release requires tpaexec setup
to be rerun after installation.
-
Update 2ndQuadrant Ansible to v2.8 (
tpaexec setup
will upgrade) -
Introduce additional checks through haproxy to avoid stale reads after failover for CAMO instances (RM11664); this does not work with SELinux enabled on the haproxy server (will be fixed in the next release)
-
Wait for reachability checks to pass only during deploy, not custom commands (which become a little faster with this change)
-
Various improvements to source builds, including the ability to build from source on Docker containers
-
Don't set net.ipv4.ip_forward by default, only when required
-
Require haproxy 1.9.13 instead of 1.9.7 (security fixes)
-
Various Python 3 compatibility changes (the next release will be fully Python 3 compatible)
-
Various testing improvements
-
Ensure that a replica does not have max_worker_processes < the primary
-
Ignore repmgr_redirect_pgbouncer if there are no pgbouncer instances
-
Don't set bdr_node_camo_partner for logical standby instances
-
Support rolling update procedure for BDR-Always-ON
-
Add new postgres-pre-update and postgres-post-update hooks
-
Allow custom
haproxy_port
to be set -
Allow custom
archive_command
to be set -
Remove file descriptor limit for pgbouncer
-
Disable repmgrd by default on BDR instances
-
Remove an unnecessary postgres restart after first deploy
-
Disable pgdgNN repository entries in yum.repos.d that do not correspond to the desired postgres_version
-
Install postgresql client libraries before installing Barman and pgbouncer (to avoid version mismatches)
-
Fix quoting in repmgr.conf for repmgr v5
-
Add new pre-initdb hook
-
Ignore extra_float_digits by default in pgbouncer
- Fix BDRv1 repository installation problem
This release requires tpaexec setup
to be rerun after installation.
-
Set max_prepared_transactions to 16 by default for BDR clusters (requires Postgres restart); 2PC is required by CAMO and eager all-node replication
-
Set synchronous_commit after BDR initialisation for BDR clusters
-
Enable EBS volume encryption at rest by default for new clusters
-
Configure HAproxy peering within a location by default
-
Accept
etc_hosts_lines
list variable setting to completely control /etc/hosts contents -
Retrieve and set bdr_node_id during BDR initialisation
-
Fix incorrect generation of /boot/grub2/grub.cfg on RedHat systems
-
Correctly limit explicit subnet associations of AWS route tables to those subnets used by the cluster within a region
-
Correctly remove AWS security groups for the cluster during deprovisioning
-
Respect ProxyCommand (and any other ssh options) set in the inventory when waiting for hosts to be reachable via ssh
-
Correctly quote string arguments in repmgr.conf
-
Accept argument-less SQL queries with embedded literal % characters (internal)
-
Accept bdr_node_group_options hash to set bdr.create_node_group() options
-
Accept
log_destination: stderr
setting to log directly to /var/log/postgresql/postgres.log (without going through rsyslog) -
Accept
repmgr_redirect_pgbouncer
setting to reconfigure pgbouncer on repmgr failover events -
Testing improvements
-
Accept post_backup_script setting for barman
-
Accept log_min_messages setting for Postgres conf.d
-
Accept top-level use_ssh_agent setting (omit IdentitiesOnly)
-
Accept repmgr_reconnect_{attempts,interval} settings for repmgr.conf
-
Don't set ssl_ca_file to the default self-signed certificate if ssl_cert_file is explicitly set
-
Don't generate /etc/cron.d/some.fq.dn because cron will ignore files under /etc/cron.d that have dots in the name
-
Never try to reuse elastic IPs on AWS (for security reasons)
-
Suppress unnecessary changed notifications for various tasks
-
Support user-supplied TLS client certificates for authentication (RT65159)
-
Allow setting
hba_force_certificate_auth: yes
on any Postgres server instance to force TLS certificate authentication for clients instead of password authentication -
Allow setting
postgres_service_environment
to set environment variables in the postgres service unit file -
Support new postgres-config and postgres-config-final hooks
-
Improvements for source builds
-
Testing improvements
-
Invoke postgres/facts from init only if postgres is running
-
Ensure correct ordering of shared_preload_libraries
-
Improve the BDR replication set configuration process
-
Enable debugging by default when building Postgres from source
-
Numerous testing improvements
-
Support for Barman 2.8
-
New
--hostnames-unsorted
configure option to avoid sorting hostnames when assigning them to instances
-
Remove unused 2ndQuadrant repository configuration files
-
When redeploying on an existing cluster, use PG_VERSION to derive postgres_version if the latter is not explicitly set in config.yml
-
Don't remove the default replication set from the BDR subscription (this breaks DDL replication)
-
Fix incorrect generation of /etc/default/grub
- Revert an unintended change to the default pgbouncer_backend configuration
-
Allow setting
bdr_node_name
in an instance's vars to change the name of the BDR node (the default remains to use the instance's name) -
Require haproxy 1.9.7 (for which packages are available from the 2ndQuadrant package repository)
-
Create an haproxy role (with NOLOGIN) to eliminate haproxy check messages from the Postgres log
-
Change default postgres_version to 11 for new clusters
-
Numerous internal testing improvements
-
Make the
tpaexec test
command take an optional test name, and provide infrastructure for custom tests -
Adapt to BDR-Always-ON v5 architecture changes
-
Allow optional branch names (git refs) to be specified with
--install-from-source 2ndqpostgres:2QREL_11_STABLE_dev …
-
Accept a list of options in
postgres_extra_configure_opts
to append to the Postgres configure invocation (backwards-compatible with existing usage ofpostgres_configure_opts
)
-
Try to apply desired transparent hugepage settings immediately, not only after a reboot
-
Correctly show build failures when installing extensions from source
-
Use new PGDG repository RPM location after breaking change upstream
-
Accept
--install-from-source 2ndqpostgres pglogical3 bdr3
as a configure option to set up a cluster built from source
-
Correctly remove provisioned AWS route tables during deprovision
-
Correctly override postgres_bin_dir for clusters built from source
-
Change pg_receivwal invocation to make
barman receive-wal --stop servername
work reliably
You must run tpaexec setup
after installing the release packages.
-
Support NVMe instance store volumes on AWS EC2 (in addition to EBS volumes, which were already supported)
-
Allow 'bare' instances to have FQDNs
-
CAMO configuration updates
-
Correctly setup cascading replication with repmgr 4.2
-
Correctly handle non-standard postgres_port settings
-
Don't install the sudo package if a sudo binary is available
-
Fall back to bzip2 or gzip for Barman compression if pigz is not available
-
Allow pgbouncer_port to be set to override the default
-
Create pgbouncer.get_auth() function in existing databases
-
Improved handling of debuginfo packages on Debian
- Add
--overrides-from a.yml …
configure option to set variables like cluster_tags and cluster_vars in the generated config.yml
-
Don't require --distribution with --platform bare
-
Don't install awscli on clusters without AWS instances
-
Allow synchronous_commit to be overriden for CAMO instances (instead of always forcing it to remote_apply)
-
Improve the
tpaexec update-postgres
command to update all Postgres-related packages, and make it available on BDR-based architectures -
Enable TLS by default between pgbouncer ↔ haproxy ↔ postgres
-
Add --enable-camo configure option for BDR-Simple and BDR-Always-ON
-
Avoid installing dl/default/release if tpa_2q_repositories is set to [] explicitly (aside from being able to set {apt,yum}_repository_list to [] to suppress other external repositories)
-
Revised pgbench schedule for
tpaexec test
, with separate pgbench-postgres and pgbench-bdr stages (== tags)
-
Various haproxy/pgbouncer configuration tweaks
-
Fix errors in initialisation of BDR logical standby instances
-
Further changes to avoid version-specific flock(1) invocations
-
We write instance variables only to host_vars/*/01-instance_vars.yml, and remove 02-topology.yml and 03-volumes.yml during provisioning
-
Individual platforms can use simpler code to set instance_vars now
-
Allow additional artifacts (files, archives, directories) to be installed on instances (via
artifacts
) -
Support building extensions from source (via
install_from_source
)
- Fix flock(1) compatibility problems that resulted in complaints about not being able to find files like xxx_password.yml or id_xxx.pub
-
Add --extra{,-optional}-packages configure arguments
-
The
tpaexec info {platforms,architectures}
command now lists the actual contents of the corresponding directories -
Support wildcard entries directly in s3_uploads
-
Support for CAMO2x2 architecture with BDR-EE 3.4.0 and 2ndQPostgres 11 (with local replication of deletes as an option).
-
Support for named locations in config.yml
- Fixes for some Barman and repmgr problems
In this release, TPAexec goes from v3.1 to v7.0 as a precaution to avoid creating any confusion with the similar version numbers for BDR and the BDR-Always-ON architecture. This release would otherwise have been v3.2.
-
Multi-platform support in
tpaexec configure
-
Experimental support for Vagrant, Docker, and lxd platforms
-
Allow instances to be backed up to multiple Barman servers in parallel
-
Add hooks/pre-deploy.yml and hooks/post-deploy.yml (included during deployment if they exist)
- Install correct rsyslog/logrotate rules for local logging
- Support EC2 instances with NVME devices
- deploy.yml should now «include_role: name=sys» instead of including the various sys/* roles one by one
- Enable repmgr monitoring_history
- Allow uploading additional files to S3 during provisioning
- Add 'hba_force_hostssl' to force hostssl lines in pg_hba.conf
- Revoke superuser privileges from the pgbouncer user
- Set repmgr_location only if explicitly requested
- Allow - in cluster names
- Set default archive_timeout of 6h
- Allow event_notification{s,_command} to be set in repmgr.conf
-
Added support for deployment architectures. See
tpaexec info architectures
for details. -
Added
tpaexec configure
command that takes an architecture name and various options and generates config.yml and deploy.yml for a new cluster. -
New BDR3-Always-ON and BDR-Simple architectures
-
New
tpaexec test
command -
New
tpaexec setup
command to setup a virtualenv and install Python dependencies automatically (the virtualenv will also be automatically activated when using tpaexec) -
New
tpaexec selftest
command to check the TPAexec installation. -
Automatic package builds
- Properly handle stopped instances in the inventory, so that re-running provision does not create duplicates for instances that happen to not be running at the time (f0cb0ea)
- Properly handle an AWS race condition that resulted in "Invalid IAM Instance Profile name" errors during provisioning (f37de54)
- Make deployment fail if ec2.py fails; depends on a patch available in 2ndQuadrant ansible (55a4fd3)
- Properly reassemble EBS RAID arrays after rehydration.
- Correctly handle (ignore) empty lines in /proc/$pid/status
- Correctly restart repmgrd after changing repmgr.conf
- Make sure coredumps are generated properly.
- Fixed RHEL issue
"Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
(f245e99) - Fixed tpaexec rehydrate failing with
"hostvars[''node-b'']\" is undefined
(b74bfa2) - Fixed repmgrd failing to start for repmgr 4.1.0 on CentOS/RedHat (aee5862)
- Fixed repmgr not quite attaching replica on RHEL systems.
- Instead of applying role 'postgres/final' on postgres instances, deploy.yml files should now apply role 'final' to all instances.
- If a volume in config.yml has vars "volume_for" and "mountpoint" both set, the latter will now take precedence over the default translation based on volume_for. Setting a mountpoint without setting volume_for is strongly discouraged (for postgres_data and barman_data volumes). Setting volume_for alone is still fine.
- Extensive documentation updates
- Initial LXD platform support
- Support postgres/repmgr/barman package version selection (6e904c8)
via
tpaexec configure … --postgres-package version
- When generating restore_command, prefer the closest Barman server (i.e., one in the same region) if there's more than one available
- Deprecate ec2_ami_user and cluster_ssh_user in favour of setting "vars: ansible_user: xxx" in instance_defaults (a9c30e1)
- Make cluster_tags optional. Owner is now automatically set to the current user's login name, and can be overriden with --owner
- Deprecate cluster_network{,s} (which was used only to generate pg_hba.conf) while maintaining backwards compatibility
- Allow instance settings to be exported as instance vars (2a6e060)
- Allow instance_defaults to specify default_volumes for all instances
- Include traceback information on module failure in various cases
- Remove ansible-cluster and ansible-cluster-playbook in favour of
tpaexec cmd
andtpaexec playbook
- New
tpaexec start-postgres
andtpaexec stop-postgres
commands for clusters that use LUKS-encrypted volumes - New
tpaexec switchover clustername nodename
command for M1 clusters - The
provision
,deploy
,deprovision
, andrehydrate
commands are replaced bytpaexec provision
etc. - Various changes related to packaging
TPA has switched from vYYYY.MM.NN to vM.N version numbers.
The new version numbers are not semantic versions. They do not imply anything about compatibility or incompatibility, nor an intention to maintain multiple branches with varying features or maturity.