src.nth.io/

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2020-01-20 13:18:18 -0600
committerLuke Hoersten <[email protected]>2020-01-20 13:18:18 -0600
commit1ed732d2f7c8de86e5c290bd38aaa63761654ac5 (patch)
treea30c512eb7bdb156745c988366f921aedf2bc0ae
parent9eb223531a017cca2c11a152ede197c8798b5684 (diff)
Added pleroma instance backup to s3.
-rw-r--r--roles/pleroma-otp/defaults/main.yaml10
-rw-r--r--roles/pleroma-otp/files/pleroma-s3-backup.sh26
-rw-r--r--roles/pleroma-otp/files/[email protected]9
-rw-r--r--roles/pleroma-otp/handlers/main.yaml4
-rw-r--r--roles/pleroma-otp/tasks/main.yaml20
-rw-r--r--roles/pleroma-otp/tasks/s3-backup.yaml20
6 files changed, 73 insertions, 16 deletions
diff --git a/roles/pleroma-otp/defaults/main.yaml b/roles/pleroma-otp/defaults/main.yaml
index bb3d043..1726861 100644
--- a/roles/pleroma-otp/defaults/main.yaml
+++ b/roles/pleroma-otp/defaults/main.yaml
@@ -18,13 +18,11 @@ pleroma_signup_open: "true"
pleroma_db_host: "localhost"
pleroma_db_superuser: "postgres"
-pleroma_apt_packages:
- - "curl"
- - "unzip"
-
-pleroma_branch: "stable"
-pleroma_download_url: "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/{{pleroma_branch}}/download?job={{pleroma_flavor}}"
+pleroma_download_url: "https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job={{pleroma_flavor}}"
pleroma_db: "pleroma_{{pleroma_instance}}"
pleroma_db_user: "pleroma_{{pleroma_instance}}"
pleroma_data_dir: "/var/lib/pleroma/instance_data"
+
+pleroma_s3_backup_enabled: true
+pleroma_cleanup_tmp: false
diff --git a/roles/pleroma-otp/files/pleroma-s3-backup.sh b/roles/pleroma-otp/files/pleroma-s3-backup.sh
new file mode 100644
index 0000000..7c1d6d3
--- /dev/null
+++ b/roles/pleroma-otp/files/pleroma-s3-backup.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+INSTANCE=$1
+DATE=`date --iso-8601`
+
+BUCKET="pleroma-${INSTANCE//_/-}-backup"
+BACKUP_DIR="/tmp/s3-backup/$BUCKET"
+BACKUP_TAR="/tmp/s3-backup/$BUCKET-$DATE.tgz"
+
+DB_NAME="pleroma_$INSTANCE"
+CONFIG="/etc/pleroma/$INSTANCE.config.exs"
+
+UPLOADS_DIR=`grep uploads $CONFIG | cut -d '"' -f 2`
+STATIC_DIR=`grep static $CONFIG | cut -d '"' -f 2`
+
+mkdir -m 775 -p "$BACKUP_DIR/"
+chown root:postgres "$BACKUP_DIR/"
+
+su postgres -c "pg_dump -d $DB_NAME --format=custom -f $BACKUP_DIR/$DB_NAME.pgdump"
+cp $CONFIG "$BACKUP_DIR/"
+cp -r $UPLOADS_DIR "$BACKUP_DIR/"
+cp -r $STATIC_DIR "$BACKUP_DIR/"
+
+tar -zc -f $BACKUP_TAR $BACKUP_DIR
+aws s3 mb "s3://$BUCKET/"
+aws s3 cp $BACKUP_TAR "s3://$BUCKET/"
diff --git a/roles/pleroma-otp/files/[email protected] b/roles/pleroma-otp/files/[email protected]
new file mode 100644
index 0000000..7459f02
--- /dev/null
+++ b/roles/pleroma-otp/files/[email protected]
@@ -0,0 +1,9 @@
+[Unit]
+Description=Pleroma s3 backup for instance "%I"
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/bin/pleroma-prepare-backup.sh %i
+
+[Install]
+WantedBy=aws-s3-backup.target
diff --git a/roles/pleroma-otp/handlers/main.yaml b/roles/pleroma-otp/handlers/main.yaml
index 60fdb61..382fb67 100644
--- a/roles/pleroma-otp/handlers/main.yaml
+++ b/roles/pleroma-otp/handlers/main.yaml
@@ -3,3 +3,7 @@
- name: restart pleroma instance
become: yes
systemd: name="pleroma@{{pleroma_instance}}.service" state="restarted" daemon_reload="yes"
+
+- name: restart pleroma instance s3 backup
+ become: yes
+ systemd: name="pleroma-s3-backup@{{pleroma_instance}}.service" state="restarted" daemon_reload="yes"
diff --git a/roles/pleroma-otp/tasks/main.yaml b/roles/pleroma-otp/tasks/main.yaml
index a78cf79..d3e4f23 100644
--- a/roles/pleroma-otp/tasks/main.yaml
+++ b/roles/pleroma-otp/tasks/main.yaml
@@ -1,9 +1,5 @@
---
-- name: install pleroma apt packages
- become: yes
- apt: name="{{pleroma_apt_packages}}"
-
- name: add users
become: yes
user: name="pleroma" shell="/bin/false" home="/opt/pleroma" system="yes"
@@ -72,12 +68,16 @@
copy: remote_src="True" src="/tmp/release/" dest="/opt/pleroma/" owner="pleroma" group="pleroma"
notify: restart pleroma instance
-# - name: remove tmp release folder
-# become: yes
-# file: path="{{item}}" state="absent"
-# with_items:
-# - "/tmp/setup_db.psql"
-# - "/tmp/release/"
+- name: remove tmp release folder
+ become: yes
+ file: path="{{item}}" state="absent"
+ with_items:
+ - "/tmp/setup_db.psql"
+ - "/tmp/release/"
+ when: pleroma_cleanup_tmp
+
+- import_tasks: s3-backup.yml
+ when: pleroma_s3_backup_enabled
- name: configure pleroma systemd service
become: yes
diff --git a/roles/pleroma-otp/tasks/s3-backup.yaml b/roles/pleroma-otp/tasks/s3-backup.yaml
new file mode 100644
index 0000000..e00cacc
--- /dev/null
+++ b/roles/pleroma-otp/tasks/s3-backup.yaml
@@ -0,0 +1,20 @@
+---
+
+- name: create s3 backup shell script
+ become: yes
+ copy:
+ src: "pleroma-s3-backup.sh"
+ dest: "/usr/local/bin/pleroma-s3-backup.sh"
+ mode: "0755"
+
+- name: configure s3 backup systemd service
+ become: yes
+ copy:
+ dest: "/lib/systemd/system/[email protected]"
+ mode: "0755"
+ notify: restart pleroma instance s3 backup
+
+- name: ensure s3 backup is enabled
+ become: yes
+ systemd: name="pleroma-s3-backup@{{pleroma_instance}}.service" enabled="yes" state="started"