mirror of
https://github.com/outbackdingo/patroni.git
synced 2026-01-28 02:20:04 +00:00
We currently have a script named `patroni_barman_recover` in Patroni, which is intended to be used as a custom bootstrap method, or as a custom replica creation method.
Now there is need of one more Barman related script in Patroni to handle switching of config models in Barman upon `on_role_change` events.
However, instead of creating another Patroni script, let's say `patroni_barman_config_switch`, and duplicating a lot of logic in the code, we decided to refactor the code so:
* Instead of two separate scripts (`patroni_barman_recover` and `patroni_barman_config_switch`), we have a single script (`patroni_barman`) with 2 sub-commands (`recover` and `config-switch`)
This is the overview of changes that have been performed:
* File `patroni.scripts.barman_recover` has been removed, and its logic has been split into a few files:
* `patroni.scripts.barman.cli`: handles the entrypoint of the new `patroni_barman` command, exposing the argument parser and calling the appropriate functions depending on the sub-command
* `patroni.scripts.barman.utils`: implements utilitary enums, functions and classes wich can be used by `cli` and by sub-commands implementation:
* retry mechanism
* logging set up
* communication with pg-backup-api
* `patroni.scripts.barman.recover`: implements the `recover` sub-command only
* File `patroni.tests.test_barman_recover` has been renamed as `patroni.tests.test_barman`
* File `patroni.scripts.barman.config_switch` was created to implement the `config-switch` sub-command only
* `setup.py` has been changed so it generates a `patroni_barman` application instead of `patroni_barman_recover`
* Docs and unit tests were updated accordingly
References: PAT-154.
63 lines
2.5 KiB
ReStructuredText
63 lines
2.5 KiB
ReStructuredText
Integration with other tools
|
|
============================
|
|
|
|
Patroni is able to integrate with other tools in your stack. In this section you
|
|
will find a list of examples, which although not an exhaustive list, might
|
|
provide you with ideas on how Patroni can integrate with other tools.
|
|
|
|
Barman
|
|
------
|
|
|
|
Patroni delivers an application named ``patroni_barman`` which has logic to
|
|
communicate with ``pg-backup-api``, so you are able to perform Barman operations
|
|
remotely.
|
|
|
|
This application currently has a couple of sub-commands: ``recover`` and
|
|
``config-switch``.
|
|
|
|
patroni_barman recover
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ``recover`` sub-command can be used as a custom bootstrap or custom replica
|
|
creation method. You can find more information about that in
|
|
:ref:`replica_imaging_and_bootstrap`.
|
|
|
|
patroni_barman config-switch
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ``config-switch`` sub-command is designed to be used as an ``on_role_change``
|
|
callback in Patroni. As an example, assume you are streaming WALs from your
|
|
current primary to your Barman host. In the event of a failover in the cluster
|
|
you might want to start streaming WALs from the new primary. You can accomplish
|
|
this by using ``patroni_barman config-switch`` as the ``on_role_change`` callback.
|
|
|
|
.. note::
|
|
That sub-command relies on the ``barman config-switch`` command, which is in
|
|
charge of overriding the configuration of a Barman server by applying a
|
|
pre-defined model on top of it. This command is available since Barman 3.10.
|
|
Please consult the Barman documentation for more details.
|
|
|
|
This is an example of how you can configure Patroni to apply a configuration
|
|
model in case this Patroni node is promoted to primary:
|
|
|
|
.. code:: YAML
|
|
|
|
postgresql:
|
|
callbacks:
|
|
on_role_change: >
|
|
patroni_barman
|
|
--api-url YOUR_API_URL
|
|
config-switch
|
|
--barman-server YOUR_BARMAN_SERVER_NAME
|
|
--barman-model YOUR_BARMAN_MODEL_NAME
|
|
--switch-when promoted
|
|
|
|
.. note::
|
|
``patroni_barman config-switch`` requires that you have both Barman and
|
|
``pg-backup-api`` configured in the Barman host, so it can execute a remote
|
|
``barman config-switch`` through the backup API. Also, it requires that you
|
|
have pre-configured Barman models to be applied. The above example uses a
|
|
subset of the available parameters. You can get more information running
|
|
``patroni_barman config-switch --help``, and by consulting the Barman
|
|
documentation.
|