v2.0.0
This commit is contained in:
@@ -1,37 +1,92 @@
|
||||
- name: Install pgBackRest
|
||||
apt:
|
||||
name: pgbackrest
|
||||
state: present
|
||||
---
|
||||
# Instalacja i konfiguracja pgBackRest
|
||||
# Full backup: niedziela 2:00
|
||||
# Incremental backup: codziennie 2:00 (oprócz niedzieli)
|
||||
# Repozytorium backupu na pg2 (replica)
|
||||
|
||||
- name: Repo dir
|
||||
# --- Auto-detect PostgreSQL version ---
|
||||
- name: Detect PostgreSQL version
|
||||
shell: "ls -d /etc/postgresql/*/ | head -1 | xargs basename"
|
||||
register: pg_version_detect
|
||||
changed_when: false
|
||||
|
||||
- name: Set PostgreSQL variables from detection
|
||||
set_fact:
|
||||
pg_version: "{{ pg_version_detect.stdout | trim }}"
|
||||
pg_cluster: "main"
|
||||
pg_data: "/var/lib/postgresql/{{ pg_version_detect.stdout | trim }}/main"
|
||||
pg_bin_path: "/usr/lib/postgresql/{{ pg_version_detect.stdout | trim }}/bin"
|
||||
|
||||
- name: Install pgBackRest and dependencies
|
||||
apt:
|
||||
name:
|
||||
- pgbackrest
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
# --- Repozytorium backupu na replica ---
|
||||
- name: Create backup repository directory (on replica)
|
||||
file:
|
||||
path: /pgbackrest
|
||||
state: directory
|
||||
owner: postgres
|
||||
mode: "750"
|
||||
group: postgres
|
||||
mode: "0750"
|
||||
when: inventory_hostname in groups['replica']
|
||||
|
||||
- name: Config
|
||||
# --- Konfiguracja pgBackRest ---
|
||||
- name: Deploy pgBackRest configuration
|
||||
template:
|
||||
src: pgbackrest.conf.j2
|
||||
dest: /etc/pgbackrest.conf
|
||||
owner: postgres
|
||||
group: postgres
|
||||
mode: "0640"
|
||||
|
||||
- name: Create stanza
|
||||
# --- Utworzenie stanza na primary ---
|
||||
- name: Create pgBackRest stanza (on primary)
|
||||
shell: pgbackrest --stanza=main stanza-create
|
||||
become: true
|
||||
become_user: postgres
|
||||
command: pgbackrest --stanza=main stanza-create
|
||||
when: inventory_hostname in groups['primary']
|
||||
register: stanza_create
|
||||
changed_when: "'CREATED' in stanza_create.stdout or 'already exists' not in stanza_create.stdout"
|
||||
ignore_errors: true
|
||||
|
||||
# --- Full backup - niedziela 2:00 ---
|
||||
- name: Schedule full backup weekly (Sunday 2:00 AM)
|
||||
cron:
|
||||
name: "pgBackRest full backup"
|
||||
weekday: "0"
|
||||
hour: "2"
|
||||
minute: "0"
|
||||
user: postgres
|
||||
job: "pgbackrest --stanza=main backup --type=full"
|
||||
state: present
|
||||
when: inventory_hostname in groups['primary']
|
||||
|
||||
- name: Full backup weekly
|
||||
# --- Incremental backup - codziennie 2:00 (ale nie w niedzielę) ---
|
||||
- name: Schedule incremental backup daily (Monday-Saturday 2:00 AM)
|
||||
cron:
|
||||
name: "pgbackrest full"
|
||||
weekday: 0
|
||||
hour: 2
|
||||
minute: 0
|
||||
job: "pgbackrest --stanza=main backup --type=full"
|
||||
|
||||
- name: Incremental backup daily
|
||||
cron:
|
||||
name: "pgbackrest incr"
|
||||
hour: 2
|
||||
minute: 0
|
||||
name: "pgBackRest incremental backup"
|
||||
weekday: "1-6"
|
||||
hour: "2"
|
||||
minute: "0"
|
||||
user: postgres
|
||||
job: "pgbackrest --stanza=main backup --type=incr"
|
||||
state: present
|
||||
when: inventory_hostname in groups['primary']
|
||||
|
||||
# --- Test configuration ---
|
||||
- name: Test pgBackRest configuration (on primary)
|
||||
shell: pgbackrest --stanza=main check
|
||||
become: true
|
||||
become_user: postgres
|
||||
when: inventory_hostname in groups['primary']
|
||||
register: pgbackrest_check
|
||||
ignore_errors: true
|
||||
|
||||
- name: Display pgBackRest check result
|
||||
debug:
|
||||
msg: "{{ pgbackrest_check.stdout }}"
|
||||
when: inventory_hostname in groups['primary']
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
# pgBackRest Configuration
|
||||
# Backup storage on replica (pg2)
|
||||
# Archive destination: /pgbackrest
|
||||
|
||||
[main]
|
||||
pg1-path=/var/lib/postgresql/16/main
|
||||
pg1-path={{ pg_data }}
|
||||
|
||||
[global]
|
||||
{% if inventory_hostname in groups['primary'] %}
|
||||
repo1-host=pg2
|
||||
{% endif %}
|
||||
repo1-path=/pgbackrest
|
||||
repo1-retention-full=2
|
||||
repo1-retention-diff=7
|
||||
repo1-retention-incr=7
|
||||
repo1-bundle=y
|
||||
start-fast=y
|
||||
log-level-console=info
|
||||
log-level-file=debug
|
||||
archive-async=y
|
||||
archive-timeout=60
|
||||
check-strict=y
|
||||
delta=y
|
||||
recovery-option=recovery_target_timeline=latest
|
||||
|
||||
{% if inventory_hostname in groups['primary'] %}
|
||||
repo1-host=pg2
|
||||
repo1-host-user=postgres
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user