{"id":15517106,"url":"https://github.com/deric/puppet-pgprobackup","last_synced_at":"2026-01-21T10:15:49.767Z","repository":{"id":40482022,"uuid":"262506599","full_name":"deric/puppet-pgprobackup","owner":"deric","description":"Automated pg_probackup","archived":false,"fork":false,"pushed_at":"2025-10-20T07:49:29.000Z","size":312,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-17T13:16:30.041Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deric.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-09T06:38:07.000Z","updated_at":"2025-10-20T07:49:28.000Z","dependencies_parsed_at":"2023-12-20T15:16:51.796Z","dependency_job_id":"54cd1b31-a6de-4d92-98cc-7c0bc2b181da","html_url":"https://github.com/deric/puppet-pgprobackup","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/deric/puppet-pgprobackup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fpuppet-pgprobackup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fpuppet-pgprobackup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fpuppet-pgprobackup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fpuppet-pgprobackup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deric","download_url":"https://codeload.github.com/deric/puppet-pgprobackup/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deric%2Fpuppet-pgprobackup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28631936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-02T10:11:36.733Z","updated_at":"2026-01-21T10:15:49.735Z","avatar_url":"https://github.com/deric.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# puppet-pgprobackup\n\n[![Puppet\nForge](http://img.shields.io/puppetforge/v/deric/pgprobackup.svg)](https://forge.puppet.com/modules/deric/pgprobackup) [![Static \u0026 Spec Tests](https://github.com/deric/puppet-pgprobackup/actions/workflows/spec.yml/badge.svg)](https://github.com/deric/puppet-pgprobackup/actions/workflows/spec.yml)\n\n\n\nAutomates PostgreSQL backups using [pgprobackup](https://postgrespro.github.io/pg_probackup/).\n\n## Description\n\nModule allows configuration of a PostgreSQL instance (role for backup, SSH keys, hba rules) and a (remote) backup catalog (user account, backup directory, host keys, SSH keys).\n\n## Setup\n\n### What pgprobackup affects\n\nModule touches many resources, including PostgreSQL configuration that might require server restart (e.g. when `archive_mode` is modified). Make sure to understand the implications before using it. Each feature could be turned off in case you're using some other mechanism.\n\n - database configuration\n - database roles\n - `pgprobackup::manage_pgpass` role password (default: `true`)\n - `pgprobackup::manage_host_keys` SSH host keys (default: `true`)\n - `pgprobackup::manage_ssh_keys` SSH authorized keys (public SSH keys)\n - `pgprobackup::manage_cron` CRON jobs (default: `true`)\n - user accounts\n - `pgprobackup` catalog\n\n### Setup Requirements\n\n - Puppet \u003e= 5\n - PostgreSQL instance \u003e= 9.5\n - `puppetlabs/postgresql` is expected to manage the PostgreSQL instance\n\n## Usage\n\nBackup server(s) (where backup data will be stored) requires packages for all different PostgreSQL version that are running the same `host_group`, e.g. `pg_probackup-11`, `pg_probackup-12`.\n```puppet\ninclude pgprobackup::catalog\n```\n\neach backup server should define:\n```yaml\npgprobackup::catalog::host_group: common\n# pg_probackup has dedicated binaries for each major PostgreSQL versions\npgprobackup::catalog::versions:\n  - '13'\n  - '14'\n```\n\nNOTE: Package version `catalog` and `instance` needs to be exactly the same! (e.g. `2.3.3-1.6a736c2db6402d77`).\n\n`pgprobackup::package_ensure` allows pinpointing to a specific version:\n```puppet\npgprobackup::package_ensure: \"2.4.2-1.8db55b42aeece064.%{facts.os.distro.codename}\"\n```\n\nAll Puppet variables are documented in [REFERENCE.md](./REFERENCE.md).\n\n### Instance\n\nDB server:\n```puppet\ninclude pgprobackup::instance\n```\nConfigure `pgprobackup` to run full backup every Sunday (via CRON job):\n```yaml\npgprobackup::manage_cron: true\npgprobackup::instance::backups:\n  common:\n    FULL:\n      hour: 3\n      minute: 15\n      weekday: [0] # same as `7` or `Sunday`\n```\nIncremental (`DELTA`) backups every day except Sunday:\n```yaml\npgprobackup::instance::backups:\n  common:\n    FULL:\n      weekday: 0\n    DELTA:\n      weekday: [1-6]\n```\n\nIncremental (`DELTA`) backups every day except Friday, full backup on Friday:\n```yaml\npgprobackup::instance::backups:\n  common:\n    FULL:\n      weekday: 5\n    DELTA:\n      weekday: [0-4,6]\n```\n\nTarget backup catalog servers (one database instance can be backed to multiple locations - first catalog is has `host_group` configured as `common` the other `off-site`):\n\n\n```yaml\npgprobackup::instance::backups:\n  common:\n    FULL:\n      weekday: 0\n    DELTA:\n      weekday: [1-6]\n  # run full backup to `off-site` location on first of each month\n  off-site:\n    FULL:\n      hour: 5\n      monthday: 1\n      retention_redundancy: 2\n      retention_window: 7\n      delete_expired: true\n      merge_expired: true\n      threads: 3\n```\n\n\nThere are many shared parameters between `instance` and `catalog`. Such parameters are defined in `pgprobackup::` namespace, such as `pgprobackup::package_name` (base package name to be installed on both instance and catalog).\n\n * `retention_window` Defines the earliest point in time for which pg_probackup can complete the recovery.\n * `retention_redundancy` The number of full backup copies to keep in the backup catalog.\n * `delete_expired` Delete expired backups when `retention_redundancy` or `retention_window` is set.\n * `merge_expired` Merge expired backups when `retention_redundancy` or `retention_window` is set.\n\n#### Instance parameters\n\n  * `threads` Number of parallel threads\n  * `temp_slot` Whether to use temporary replication slot, which should guarantee that WAL won't be removed from primary server. In case of backup failure the slot will be removed (default `false`).\n  * `slot` Specifies the replication slot for WAL streaming. Can't be used together with `archive_wal=true`.\n  * `validate` Validate backup consistency after backup completition (default: `true`).\n  * `compress_algorithm` Currently supported algorithms `zlib` or `pglz` (default: 'none')\n  * `compress_level` `0-9` (defalt: `1`)\n  * `archive_timeout` Timeout in seconds for copying all remaining WAL files (default `300`).\n\n### Logging\n\nParameters can be specified on `instance` level:\n\n```yaml\npgprobackup::instance::log_dir: /var/log/pg_probackup\npgprobackup::instance::log_level_file: info\n```\n\nor for specific backup:\n```yaml\npgprobackup::instance::backups:\n  common:\n    FULL:\n      log_level_file: verbose\n```\n\n * `log_dir` - by default stored to `backup dir/log`\n * `log_file` - custom filename\n * `redirect_console` redirect stdout \u0026 stderr to file (default: `false`)\n * `log_console` - custom filename for console log (requires `redirect_console: true`)\n * `log_level_file` - allowed values `off, error, warning, info, log, verbose`\n * `log_level_console` - allowed values `off, error, warning, info, log, verbose`\n * `log_rotation_size` - rotate logfile if its size exceeds this value; 0 disables; (default: 0) available units: 'kB', 'MB', 'GB', 'TB' (default: kB)\n * `log_rotation_age` - rotate logfile if its size exceeds this value; 0 disables; (default: 0) available units: 'ms', 's', 'min', 'h', 'd' (default: min)\n\n## Limitations\n\nError message on `catalog` server:\n```\nCould not find resource 'Package[pg-probackup-11]' in parameter 'require'\n```\n\nmeans, that the server requires packages for all different Postgresql versions that are being backed up.\n```yaml\npgprobackup::catalog::versions:\n  - '11'\n  - '12'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderic%2Fpuppet-pgprobackup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderic%2Fpuppet-pgprobackup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderic%2Fpuppet-pgprobackup/lists"}