aboutsummaryrefslogtreecommitdiff
path: root/roles/postgres_backup/tasks/main.yml
blob: 57f32b4d6f3bdbfe29ea6adc8a8b137015c955d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
---
- name: Install BORG
  apt:
    name:
      - borgbackup
  become: yes

- name: Create BORG repo
  file:
    path: '{{ borg_repo_dir }}'
    state: directory
    mode: 'u=rwx,g=,o='
  become: yes

- name: Initialize BORG repo
  command:
    cmd: borg init --encryption=repokey
    creates: '{{ borg_repo_dir }}/config'
  environment:
    BORG_REPO: '{{ pgsql_backup.repo_dir }}'
    BORG_PASSPHRASE: '{{ pgsql_backup.repo_key }}'
  become: yes

- name: Create tempdir
  file:
    path: /tmp/postgres
    state: directory
    owner: postgres
    group: postgres
    mode: 'u=rwx,g=,o='
  become: yes

- name: Dump databases
  community.postgresql.postgresql_db:
    name: '{{ item }}'
    state: dump
    target: '/tmp/postgres/{{ item }}.sql'
    login_unix_socket: '/var/run/postgresql/'
  loop: '{{ pgsql_dbs }}'
  become_user: postgres
  become: yes

- name: Create BORG backup
  command: 'borg create --compression lz4 --verbose ::{hostname}-{now} /tmp/postgres'
  environment:
    BORG_REPO: '{{ pgsql_backup.repo_dir }}'
    BORG_PASSPHRASE: '{{ pgsql_backup.repo_key }}'
  register: borg_output
  become: yes

- name: Borg Output
  debug:
    var: borg_output.stderr

- name: Delete TEMP files
  file:
    path: /tmp/postgres
    state: absent
  become: yes

- name: Prune BORG backup
  command: 'borg prune --list --keep-last 3 --keep-daily 7 --keep-weekly 4 --keep-monthly 6'
  environment:
    BORG_REPO: '{{ pgsql_backup.repo_dir }}'
    BORG_PASSPHRASE: '{{ pgsql_backup.repo_key }}'
  register: borg_prune
  become: yes

- name: Prune Output
  debug:
    var: borg_prune.stderr