commit ba51f20adf938ea06e2b99723cbeebc9afaefab1 parent a351fb79c5f9f9d2bd7cd63d9ae21289c7ea04ae Author: Devan Carpenter <devan@taler.net> Date: Wed, 9 Apr 2025 13:34:09 -0500 database: improvements with import/export of backups Diffstat:
| M | roles/database/tasks/main.yml | | | 40 | ++++++++++++++++++++++++++++++++-------- |
| M | roles/db_backup/tasks/main.yml | | | 9 | +++++++++ |
2 files changed, 41 insertions(+), 8 deletions(-)
diff --git a/roles/database/tasks/main.yml b/roles/database/tasks/main.yml @@ -10,37 +10,61 @@ - Restart postgresql when: ansible_os_family == 'Debian' +- name: Make sure PostgreSQL is started if trying to import + systemd: + name: postgresql + state: started + when: ansible_local.taler_backup_import is defined + +- name: Collect info about databases + become: true + become_user: postgres + community.postgresql.postgresql_info: + filter: + - "databases*" + register: database_info + when: ansible_local.taler_backup_import is defined + - name: If import triggered then verify database is not already existent become: true become_user: postgres community.postgresql.postgresql_query: login_user: postgres - db: postgres + db: taler-exchange query: SELECT schema_name FROM information_schema.schemata WHERE schema_name = '_v'; register: DATABASE_EXISTS - when: ansible_local.taler_backup_import is defined + when: ansible_local.taler_backup_import is defined and database_info.databases == "taler-exchange" - name: Fail if trying to import and db exists fail: msg="Import fact set but _v schema exists" - when: ansible_local.taler_backup_import is defined and DATABASE_EXISTS is defined + when: ansible_local.taler_backup_import is defined and DATABASE_EXISTS.statusmessage is defined and DATABASE_EXISTS.statusmessage == "SELECT 1" -- name: Make sure PostgreSQL is stopped before import - systemd: - name: postgresql - state: stopped - enabled: true +- name: Import backup if import fact is set + become: true + become_user: postgres + community.postgresql.postgresql_db: + login_user: postgres + db: postgres + state: restore + target: /tmp/taler-postgres-backup.sql.xz + notify: + - Restart postgresql + when: ansible_local.taler_backup_import is defined - name: Import backup if import fact is set become: true become_user: postgres community.postgresql.postgresql_db: + login_user: postgres + db: taler-exchange state: restore target: /tmp/taler-postgres-backup.sql.xz notify: - Restart postgresql when: ansible_local.taler_backup_import is defined + - name: Make sure PostgreSQL is started and enabled systemd: name: postgresql diff --git a/roles/db_backup/tasks/main.yml b/roles/db_backup/tasks/main.yml @@ -14,3 +14,12 @@ db: postgres state: dump target: /tmp/taler-postgres-backup.sql.xz + +- name: Export databases + become: true + become_user: postgres + community.postgresql.postgresql_db: + login_user: postgres + db: taler-exchange + state: dump + target: /tmp/taler-exchange-backup.sql.xz