stuff
This commit is contained in:
Vendored
+10
@@ -80,6 +80,16 @@
|
|||||||
"panel": "dedicated"
|
"panel": "dedicated"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"label": "Deploy: backup",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "make deploy-backup",
|
||||||
|
"group": "build",
|
||||||
|
"presentation": {
|
||||||
|
"reveal": "always",
|
||||||
|
"panel": "dedicated"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "Deploy: wireguard",
|
"label": "Deploy: wireguard",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
- name: Backup
|
||||||
|
hosts: pi
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
gpg_password: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
34383033383462626132353163303532376137613539326662383038663537633465373863396539
|
||||||
|
6139623961303165353230303637303530343136363165380a323534663665323836636165323237
|
||||||
|
39653863313962353033336338376462303962323762663139663136663033306161316361303630
|
||||||
|
6466663761643438360a653166616130633862643236633663303731356337326361636436646439
|
||||||
|
37303633353961623766313063363734376334383163376337376639306135373064
|
||||||
|
tasks:
|
||||||
|
- name: Install rsync
|
||||||
|
ansible.builtin.apt:
|
||||||
|
name: rsync
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create backup directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /opt/backup
|
||||||
|
state: directory
|
||||||
|
mode: '0700'
|
||||||
|
|
||||||
|
- name: Copy daily
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: backupDaily.sh
|
||||||
|
dest: /opt/backup/backupDaily.sh
|
||||||
|
mode: '0700'
|
||||||
|
|
||||||
|
- name: Copy weekly
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: backupWeekly.sh
|
||||||
|
dest: /opt/backup/backupWeekly.sh
|
||||||
|
mode: '0700'
|
||||||
|
|
||||||
|
- name: Copy passphrase
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: passphrase.txt.j2
|
||||||
|
dest: /opt/backup/passphrase.txt
|
||||||
|
mode: '0600'
|
||||||
|
|
||||||
|
- name: Schedule daily backup
|
||||||
|
ansible.builtin.cron:
|
||||||
|
name: beepi backup daily
|
||||||
|
user: root
|
||||||
|
minute: '0'
|
||||||
|
hour: '3'
|
||||||
|
job: /opt/backup/backupDaily.sh >> /var/log/beepi-backup.log 2>&1
|
||||||
|
|
||||||
|
- name: Schedule weekly backup
|
||||||
|
ansible.builtin.cron:
|
||||||
|
name: beepi backup weekly
|
||||||
|
user: root
|
||||||
|
minute: '0'
|
||||||
|
hour: '5'
|
||||||
|
weekday: '0'
|
||||||
|
job: /opt/backup/backupWeekly.sh >> /var/log/beepi-backup.log 2>&1
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
now=$(date +"%Y%m%d%H%M")
|
||||||
|
|
||||||
|
declare -a arr=("gitea" "mail" "matrix" "monitoring")
|
||||||
|
declare -a monitoring=("monitoring_prometheus-data" "monitoring_grafana-storage" "monitoring_loki-data" "monitoring_alloy-data")
|
||||||
|
declare -a matrix=("matrix_db")
|
||||||
|
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
for i in "${arr[@]}"
|
||||||
|
do
|
||||||
|
cd /opt/beeserver/${i}
|
||||||
|
podman-compose down -t 60
|
||||||
|
if [[ "$i" == "monitoring" ]]
|
||||||
|
then
|
||||||
|
for j in "${monitoring[@]}"
|
||||||
|
do
|
||||||
|
podman volume export ${j} --output ${j}.tar
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$i" == "matrix" ]]
|
||||||
|
then
|
||||||
|
for j in "${matrix[@]}"
|
||||||
|
do
|
||||||
|
podman volume export ${j} --output ${j}.tar
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
rsync -aH /opt/beeserver/${i} /opt/backup/beeserver
|
||||||
|
podman-compose up -d
|
||||||
|
done
|
||||||
|
|
||||||
|
tar -czf - /opt/backup/beeserver | gpg --batch --passphrase-file /opt/backup/passphrase.txt -c -o /home/beeshare/raid/serverBackup/beeserver_daily_${now}.tar.gz.gpg
|
||||||
|
|
||||||
|
function cleanup()
|
||||||
|
{
|
||||||
|
for j in "${monitoring[@]}"
|
||||||
|
do
|
||||||
|
rm -rf /opt/beeserver/monitoring/${j}.tar
|
||||||
|
done
|
||||||
|
|
||||||
|
for j in "${matrix[@]}"
|
||||||
|
do
|
||||||
|
rm -rf /opt/beeserver/matrix/${j}.tar
|
||||||
|
done
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
now=$(date +"%Y%m%d%H%M")
|
||||||
|
|
||||||
|
tar -czf - /opt/backup/beeserver | gpg --batch --passphrase-file /opt/backup/passphrase.txt -c -o /home/beeshare/raid/serverBackup/beeserver_weekly_${now}.tar.gz.gpg
|
||||||
|
|
||||||
|
if [ -s /home/beeshare/raid/serverBackup/beeserver_weekly_${now}.tar.gz.gpg ]
|
||||||
|
then
|
||||||
|
rm -rf /opt/backup/beeserver
|
||||||
|
fi
|
||||||
|
|
||||||
|
find /home/beeshare/raid/serverBackup -maxdepth 1 -name 'beeserver_weekly_*.tar.gz.gpg' -mtime +30 -delete
|
||||||
|
find /home/beeshare/raid/serverBackup -maxdepth 1 -name 'beeserver_daily_*.tar.gz.gpg' -mtime +7 -delete
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{{ gpg_password }}
|
||||||
@@ -46,18 +46,18 @@
|
|||||||
state: directory
|
state: directory
|
||||||
mode: '0755'
|
mode: '0755'
|
||||||
|
|
||||||
- name: Copy compose
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: docker-compose.yml.j2
|
|
||||||
dest: /opt/beeserver/monitoring/docker-compose.yml
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Compose down
|
- name: Compose down
|
||||||
changed_when: true
|
changed_when: true
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: podman-compose down
|
cmd: podman-compose down
|
||||||
chdir: /opt/beeserver/monitoring
|
chdir: /opt/beeserver/monitoring
|
||||||
|
|
||||||
|
- name: Copy compose
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: docker-compose.yml.j2
|
||||||
|
dest: /opt/beeserver/monitoring/docker-compose.yml
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
- name: Copy prometheus config
|
- name: Copy prometheus config
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: prometheus_config.yml
|
src: prometheus_config.yml
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ scrape_configs:
|
|||||||
- targets: ['localhost:9090']
|
- targets: ['localhost:9090']
|
||||||
- job_name: node
|
- job_name: node
|
||||||
static_configs:
|
static_configs:
|
||||||
- targets: ['host.containers.internal:9100']
|
- targets:
|
||||||
|
- 'host.containers.internal:9100'
|
||||||
|
- '192.168.178.51:9100'
|
||||||
- job_name: podman
|
- job_name: podman
|
||||||
static_configs:
|
static_configs:
|
||||||
- targets: ['podman-exporter:9882']
|
- targets: ['podman-exporter:9882']
|
||||||
- job_name: beepc
|
|
||||||
static_configs:
|
|
||||||
- targets: ['192.168.178.51:9100']
|
|
||||||
Reference in New Issue
Block a user