From 7a57a3ccf57ca4095a084a9ab34b51307eb52b91 Mon Sep 17 00:00:00 2001 From: L3D Date: Wed, 8 Jul 2020 17:22:41 +0200 Subject: [PATCH] Rewrite and copy backup script --- defaults/main.yml | 7 +++++++ tasks/main.yml | 9 +++++++++ {files => templates}/postgresql-backup-script.sh | 15 +++++---------- vars/main.yml | 4 ++++ 4 files changed, 25 insertions(+), 10 deletions(-) rename {files => templates}/postgresql-backup-script.sh (66%) diff --git a/defaults/main.yml b/defaults/main.yml index 241c268..cc3065f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -7,3 +7,10 @@ postgresql_backup: - postgresql-client backup_dir: /var/backup/postgresql date_format: '%Y-%m-%d_%H-%M' + user: root + databases: [] +# - name: psql_database_name +# user: psql_database_user +# password: Topf_Secret1 +# host: localhost # optional +# port: 5432 # optional diff --git a/tasks/main.yml b/tasks/main.yml index 3f26132..3182a07 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -7,3 +7,12 @@ when: submodules_versioncheck|bool - include_tasks: packages.yml + +- name: generate backup script + become: true + template: + src: templates/postgresql-backup-script.sh + dest: /etc/postgresql-backup-script.sh + owner: "{{ postgresql_backup.user }}" + backup: true + mode: 0755 diff --git a/files/postgresql-backup-script.sh b/templates/postgresql-backup-script.sh similarity index 66% rename from files/postgresql-backup-script.sh rename to templates/postgresql-backup-script.sh index 5484c34..9db8e53 100644 --- a/files/postgresql-backup-script.sh +++ b/templates/postgresql-backup-script.sh @@ -1,15 +1,11 @@ #!/usr/bin/env bash -# this file is managed by ansible! +# {{ ansible_managed }} set -o pipefail BACKUP_DIR_BASE="{{ postgresql_backup.backup_dir | default( '/var/backup/postgresql/' ) }}" DATE_FORMAT="{{ postgresql_backup.date_format | default( '%Y-%m-%d_%H-%M' ) }}" -PG_HOSTNAME -PG_USERNAME -PG_PORT -PG_DATABASE create_backup_dir() { local backup_dir="${BACKUP_DIR_BASE%/}/$(date "+$DATE_FORMAT")" @@ -17,15 +13,14 @@ create_backup_dir() { echo "$backup_dir" } - backup_databases() { - local filename="${PG_DATABASE}.psql" - if (umask 077 && pg_dump -F c -h "$PG_HOSTNAME" -U "$PG_USERNAME" -p "$PG_PORT" "$PG_DATABASE" -f "${filename}.in_progress"); then - mv "${filename}.in_progress" "$filename" + {% for db in postgresql_backup.databases %} + if (umask 077 && pg_dump -F c -h "{{ db.host | defaul( 'localhost' ) }}" -U "{{ db.user | default( 'postgres' ) }}" -p "{{ db.port | default( '5432' ) }}" "{{ db.name }}" -f "{{ db.name }}.in_progress.psql"); then + mv "{{ db.name }}.in_progress.psql" "{{ db.name }}.psql" else return 1 fi; - done <<< "$databases" + {% endfor %} return 0 } diff --git a/vars/main.yml b/vars/main.yml index 2e50eaa..856866f 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -6,3 +6,7 @@ playbook_version_path: 'role-postgresql-backup_roles-ansible_github.com.version' _postgresql_backup: required_packages: - postgresql-client + backup_dir: /var/backup/postgresql + date_format: '%Y-%m-%d_%H-%M' + user: root + databases: []