Files
auricom-home-cluster/cluster/apps/data/bookstack/export-job.yaml

67 lines
3.1 KiB
YAML

---
apiVersion: batch/v1
kind: CronJob
metadata:
name: bookstack-books-export
namespace: data
spec:
schedule: "@daily"
jobTemplate:
spec:
template:
metadata:
name: bookstack-books-export
spec:
serviceAccountName: jobs
imagePullSecrets:
- name: regcred
containers:
- name: gitea-repositories-backup
image: ghcr.io/auricom/kubectl:v1.24.2@sha256:a09ef800e935a37d9704ab9b05ebad37ef8d01228ee414f41b24114a8eb05f1f
imagePullPolicy: IfNotPresent
command:
- "bin/sh"
- "-ec"
- |
#!/bin/bash
set -o nounset
set -o errexit
mkdir -p ~/.ssh
cp /opt/id_rsa ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh -o StrictHostKeyChecking=no homelab@${LOCAL_LAN_TRUENAS} << 'EOF'
set -x
WORK_DIR="/mnt/storage/backups/apps/bookstack"
SHELVES=$(curl --silent --location --request GET "https://bookstack.${SECRET_CLUSTER_DOMAIN}/api/shelves" --header "Authorization: Token ${SECRET_BOOKSTACK_TOKEN_ID}:${SECRET_BOOKSTACK_TOKEN_SECRET}" | jq --raw-output .data[].id)
for shelf in $SHELVES
do
shelf_slug=$(curl --silent --location --request GET "https://bookstack.${SECRET_CLUSTER_DOMAIN}/api/shelves/$shelf" --header "Authorization: Token ${SECRET_BOOKSTACK_TOKEN_ID}:${SECRET_BOOKSTACK_TOKEN_SECRET}" | jq --raw-output .slug)
mkdir -p $WORK_DIR/$shelf_slug
BOOKS=$(curl --silent --location --request GET "https://bookstack.${SECRET_CLUSTER_DOMAIN}/api/shelves/$shelf" --header "Authorization: Token ${SECRET_BOOKSTACK_TOKEN_ID}:${SECRET_BOOKSTACK_TOKEN_SECRET}" | jq --raw-output .books[].id)
for book in $BOOKS
do
book_slug=$(curl --silent --location --request GET "https://bookstack.${SECRET_CLUSTER_DOMAIN}/api/books/$book" --header "Authorization: Token ${SECRET_BOOKSTACK_TOKEN_ID}:${SECRET_BOOKSTACK_TOKEN_SECRET}" | jq --raw-output .slug)
echo "INFO: export book $book_slug..."
curl --silent --location --request GET "https://bookstack.${SECRET_CLUSTER_DOMAIN}/api/books/$book/export/html" --header "Authorization: Token ${SECRET_BOOKSTACK_TOKEN_ID}:${SECRET_BOOKSTACK_TOKEN_SECRET}" --output $WORK_DIR/$shelf_slug/$book_slug.html
done
done
EOF
curl -m 10 --retry 5 http://healthchecks.monitoring.svc.cluster.local:8000/ping/63ddc7f3-87c4-405d-8fab-b666b9d6c67e
volumeMounts:
- name: secret
mountPath: /opt/id_rsa
subPath: deployment_rsa_priv_key
volumes:
- name: secret
secret:
secretName: bookstack-secrets
restartPolicy: Never