# 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 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:

    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.