From 03b0b85247f359dddbfa586595ab95603152bd9a Mon Sep 17 00:00:00 2001 From: Michael Jerger <michael.jerger@meissa-gmbh.de> Date: Mon, 30 Dec 2024 14:21:27 +0100 Subject: [PATCH] refactor to babashka driven backup --- infrastructure/backup/image/Dockerfile | 2 +- .../resources/entrypoint-start-and-wait.sh | 19 ----------- .../backup/image/resources/entrypoint.sh | 17 ---------- .../backup/image/resources/install.bb | 10 ++---- .../backup/image/resources/install.sh | 21 ------------ .../backup/image/resources/list-snapshots.bb | 5 +-- .../backup/image/resources/restore.bb | 29 ++++++++++++++++ .../backup/image/resources/restore.sh | 33 ------------------- infrastructure/backup/image/resources/wait.bb | 21 ++++++++++++ .../backup/image/resources2/test.bb | 10 +++--- .../backup/backup-restore-deployment.yaml | 2 +- src/main/resources/backup/cron.yaml | 2 +- 12 files changed, 62 insertions(+), 109 deletions(-) delete mode 100644 infrastructure/backup/image/resources/entrypoint-start-and-wait.sh delete mode 100755 infrastructure/backup/image/resources/entrypoint.sh delete mode 100755 infrastructure/backup/image/resources/install.sh create mode 100755 infrastructure/backup/image/resources/restore.bb delete mode 100755 infrastructure/backup/image/resources/restore.sh create mode 100755 infrastructure/backup/image/resources/wait.bb diff --git a/infrastructure/backup/image/Dockerfile b/infrastructure/backup/image/Dockerfile index cfec7b3..b9adae5 100644 --- a/infrastructure/backup/image/Dockerfile +++ b/infrastructure/backup/image/Dockerfile @@ -1,4 +1,4 @@ -FROM domaindrivenarchitecture/dda-backup:latest +FROM domaindrivenarchitecture/dda-backup:5.1.0 # Prepare Entrypoint Script ADD resources /tmp diff --git a/infrastructure/backup/image/resources/entrypoint-start-and-wait.sh b/infrastructure/backup/image/resources/entrypoint-start-and-wait.sh deleted file mode 100644 index 58d847b..0000000 --- a/infrastructure/backup/image/resources/entrypoint-start-and-wait.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -exo pipefail - -function main() { - file_env POSTGRES_DB - file_env POSTGRES_PASSWORD - file_env POSTGRES_USER - - create-pg-pass - - while true; do - sleep 1m - done -} - -source /usr/local/lib/functions.sh -source /usr/local/lib/pg-functions.sh -main \ No newline at end of file diff --git a/infrastructure/backup/image/resources/entrypoint.sh b/infrastructure/backup/image/resources/entrypoint.sh deleted file mode 100755 index 3bdf754..0000000 --- a/infrastructure/backup/image/resources/entrypoint.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -Eexo pipefail - -function main() { - file_env POSTGRES_DB - file_env POSTGRES_PASSWORD - file_env POSTGRES_USER - - create-pg-pass - - /usr/local/bin/backup.sh -} - -source /usr/local/lib/functions.sh -source /usr/local/lib/pg-functions.sh -main diff --git a/infrastructure/backup/image/resources/install.bb b/infrastructure/backup/image/resources/install.bb index 9ce49b7..49f6429 100755 --- a/infrastructure/backup/image/resources/install.bb +++ b/infrastructure/backup/image/resources/install.bb @@ -5,19 +5,15 @@ '[dda.image.install :as in]) (ub/upgrade-system!) -(in/install! "entrypoint.sh") -(in/install! "entrypoint-start-and-wait.sh") - (in/install! "bb-backup.edn" :target-name "bb.edn" :mod "0440") (in/install! "config.clj" :mod "0440") (in/install! "init.bb") (in/install! "backup.bb") -(in/install! "restore.sh") +(in/install! "restore.bb") (in/install! "list-snapshots.bb") (in/install! "start-maintenance.sh") (in/install! "end-maintenance.sh") - -#(in/install! "restore.bb") -#(in/install! "wait.bb") +(in/install! "restore.bb") +(in/install! "wait.bb") (ub/cleanup-container!) \ No newline at end of file diff --git a/infrastructure/backup/image/resources/install.sh b/infrastructure/backup/image/resources/install.sh deleted file mode 100755 index 1ebd786..0000000 --- a/infrastructure/backup/image/resources/install.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -exo pipefail - -function main() { - { - install -m 0700 /tmp/entrypoint.sh / - install -m 0700 /tmp/entrypoint-start-and-wait.sh / - - install -m 0700 /tmp/init.sh /usr/local/bin/ - install -m 0700 /tmp/backup.sh /usr/local/bin/ - install -m 0700 /tmp/restore.sh /usr/local/bin/ - install -m 0700 /tmp/list-snapshots.sh /usr/local/bin/ - install -m 0700 /tmp/start-maintenance.sh /usr/local/bin/ - install -m 0700 /tmp/end-maintenance.sh /usr/local/bin/ - cleanupDocker - } > /dev/null -} - -source /tmp/install_functions_debian.sh -main diff --git a/infrastructure/backup/image/resources/list-snapshots.bb b/infrastructure/backup/image/resources/list-snapshots.bb index 361cfc4..fb97cdd 100755 --- a/infrastructure/backup/image/resources/list-snapshots.bb +++ b/infrastructure/backup/image/resources/list-snapshots.bb @@ -1,15 +1,12 @@ #!/usr/bin/env bb - (require '[babashka.fs :as fs]) - -(println (-> "/usr/local/bin/config.clj" fs/file load-file)) (-> "/usr/local/bin/config.clj" fs/file load-file) (require '[dda.backup.core :as bc] '[dda.backup.restic :as rc] - '[config.clj :as cf]) + '[config :as cf]) (defn prepare! [] diff --git a/infrastructure/backup/image/resources/restore.bb b/infrastructure/backup/image/resources/restore.bb new file mode 100755 index 0000000..797d005 --- /dev/null +++ b/infrastructure/backup/image/resources/restore.bb @@ -0,0 +1,29 @@ +#!/usr/bin/env bb +(require + '[babashka.fs :as fs]) +(-> "/usr/local/bin/config.clj" fs/file load-file) + +(require + '[babashka.tasks :as t] + '[dda.backup.core :as bc] + '[dda.backup.postgresql :as pg] + '[dda.backup.restore :as rs] + '[config :as cf]) + +(defn prepare! + [] + (bc/create-aws-credentials! cf/aws-config) + (pg/create-pg-pass! cf/db-config)) + +(defn restic-restore! + [] + (pg/drop-create-db! cf/db-config) + (rs/restore-db-roles! cf/db-role-config) + (rs/restore-db! cf/db-config) + (rs/restore-file! cf/file-config) + ) + +(t/shell "start-maintenance.sh") +(prepare!) +(restic-restore!) +(t/shell "end-maintenance.sh") \ No newline at end of file diff --git a/infrastructure/backup/image/resources/restore.sh b/infrastructure/backup/image/resources/restore.sh deleted file mode 100755 index 44db019..0000000 --- a/infrastructure/backup/image/resources/restore.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -set -Eexo pipefail - -function main() { - local role_snapshot_id="${1:-latest}" - local db_snapshot_id="${2:-latest}" - local file_snapshot_id="${3:-latest}" - - - start-maintenance.sh - - file_env AWS_ACCESS_KEY_ID - file_env AWS_SECRET_ACCESS_KEY - - file_env POSTGRES_DB - file_env POSTGRES_PASSWORD - file_env POSTGRES_USER - - drop-create-db - - restore-roles ${role_snapshot_id} - restore-db ${db_snapshot_id} - restore-directory '/var/backups/' ${file_snapshot_id} - - end-maintenance.sh -} - -source /usr/local/lib/functions.sh -source /usr/local/lib/pg-functions.sh -source /usr/local/lib/file-functions.sh - -main "$@" diff --git a/infrastructure/backup/image/resources/wait.bb b/infrastructure/backup/image/resources/wait.bb new file mode 100755 index 0000000..620b789 --- /dev/null +++ b/infrastructure/backup/image/resources/wait.bb @@ -0,0 +1,21 @@ +#!/usr/bin/env bb +(require + '[babashka.fs :as fs]) +(-> "/usr/local/bin/config.clj" fs/file load-file) + +(require + '[dda.backup.core :as bc] + '[dda.backup.postgresql :as pg] + '[config :as cf]) + +(defn prepare! + [] + (bc/create-aws-credentials! cf/aws-config) + (pg/create-pg-pass! cf/db-config)) + +(defn wait! [] + (while true + (Thread/sleep 1000))) + +(prepare!) +(wait!) \ No newline at end of file diff --git a/infrastructure/backup/image/resources2/test.bb b/infrastructure/backup/image/resources2/test.bb index a6d4314..3604da7 100755 --- a/infrastructure/backup/image/resources2/test.bb +++ b/infrastructure/backup/image/resources2/test.bb @@ -22,8 +22,8 @@ (defn restic-repo-init! [] (rc/init! cf/file-config) - (rc/init! (merge cf/db-config cf/dry-run)) - (rc/init! (merge cf/db-role-config cf/dry-run))) + (rc/init! (merge cf/db-config)) + (rc/init! (merge cf/db-role-config))) (defn restic-backup! [] @@ -37,12 +37,12 @@ (rc/list-snapshots! (merge cf/db-role-config cf/dry-run)) (rc/list-snapshots! (merge cf/db-config cf/dry-run))) - (defn restic-restore! [] - (rs/restore-file! (merge {:debug true} cf/file-restore-config)) + (println "huhu") + (rs/restore-file! (merge cf/file-restore-config {:debug true})) (pg/drop-create-db! (merge cf/db-config cf/dry-run)) - ;(rs/restore-db-roles! (merge cf/db-role-config cf/dry-run)) + (rs/restore-db-roles! (merge cf/db-role-config cf/dry-run)) (rs/restore-db! (merge cf/db-config cf/dry-run))) (prepare!) diff --git a/src/main/resources/backup/backup-restore-deployment.yaml b/src/main/resources/backup/backup-restore-deployment.yaml index 3a43bd1..26a4ebe 100644 --- a/src/main/resources/backup/backup-restore-deployment.yaml +++ b/src/main/resources/backup/backup-restore-deployment.yaml @@ -21,7 +21,7 @@ spec: - name: backup-app image: domaindrivenarchitecture/c4k-cloud-backup imagePullPolicy: IfNotPresent - command: ["/entrypoint-start-and-wait.sh"] + command: ["wait.bb"] env: - name: POSTGRES_USER valueFrom: diff --git a/src/main/resources/backup/cron.yaml b/src/main/resources/backup/cron.yaml index 0424ec6..a7c1cad 100644 --- a/src/main/resources/backup/cron.yaml +++ b/src/main/resources/backup/cron.yaml @@ -17,7 +17,7 @@ spec: - name: backup-app image: domaindrivenarchitecture/c4k-cloud-backup imagePullPolicy: IfNotPresent - command: ["/entrypoint.sh"] + command: ["backup.bb"] env: - name: POSTGRES_USER valueFrom: