Add full affine scripts
This commit is contained in:
35
affine/backup.sh
Executable file
35
affine/backup.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Note: use rclone for backup, needs manually configuration.
|
||||||
|
|
||||||
|
UPLOAD=""
|
||||||
|
CONFIG=""
|
||||||
|
LOCAL_BACKUP="$HOME/.local/backup"
|
||||||
|
REMOTE=""
|
||||||
|
|
||||||
|
DB_USERNAME=""
|
||||||
|
DB_PASSWORD=""
|
||||||
|
DB_DATABASE=""
|
||||||
|
CONTAINER_POSTGRES=""
|
||||||
|
SERVICE_SERVER=""
|
||||||
|
|
||||||
|
STAGING_DIR=$(mktemp -d)
|
||||||
|
mkdir -p $LOCAL_BACKUP
|
||||||
|
DATE=$(date +%F-%H-%M-%S)
|
||||||
|
BACKUP_NAME="backup_$DATE.tar.gz"
|
||||||
|
|
||||||
|
systemctl --user stop $SERVICE_SERVER
|
||||||
|
podman exec $CONTAINER_POSTGRES pg_dump -U $DB_USERNAME -F c -d $DB_DATABASE > $STAGING_DIR/db.dump
|
||||||
|
|
||||||
|
cp -r "$UPLOAD" "$STAGING_DIR/upload"
|
||||||
|
cp -r "$CONFIG" "$STAGING_DIR/config"
|
||||||
|
tar -czf "$LOCAL_BACKUP/$BACKUP_NAME" -C "$STAGING_DIR" .
|
||||||
|
|
||||||
|
ls -1t "$LOCAL_BACKUP"/backup_*.tar.gz | tail -n +6 | xargs -r rm --
|
||||||
|
|
||||||
|
|
||||||
|
/usr/bin/rclone sync $LOCAL_BACKUP $REMOTE > /dev/null
|
||||||
|
|
||||||
|
rm -rf $STAGING_DIR
|
||||||
|
|
||||||
|
systemctl --user start $SERVICE_SERVER
|
||||||
@@ -3,21 +3,34 @@ set -e
|
|||||||
|
|
||||||
. ./env.sh
|
. ./env.sh
|
||||||
|
|
||||||
if systemctl --user list-units --full --all | grep -q "$CONTAINER_PREFIX-$CONTAINER_SERVER.service"; then
|
services=("$CONTAINER_PREFIX-$CONTAINER_SERVER.service"
|
||||||
systemctl --user stop $CONTAINER_PREFIX-$CONTAINER_SERVER.service
|
"$CONTAINER_PREFIX-$CONTAINER_POSTGRES.service"
|
||||||
fi
|
"$CONTAINER_PREFIX-$CONTAINER_REDIS.service"
|
||||||
|
)
|
||||||
|
|
||||||
if systemctl --user list-units --full --all | grep -q "$CONTAINER_PREFIX-$CONTAINER_POSTGRES.service"; then
|
for service in "${services[@]}"; do
|
||||||
systemctl --user stop $CONTAINER_PREFIX-$CONTAINER_POSTGRES.service
|
if systemctl --user list-units --full --all | grep -q "$service"; then
|
||||||
|
echo "Stopping $service..."
|
||||||
|
systemctl --user stop $service
|
||||||
|
echo "$service stopped."
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if systemctl --user list-units --full --all | grep -q "$CONTAINER_PREFIX-$CONTAINER_REDIS.service"; then
|
containers=(
|
||||||
systemctl --user stop $CONTAINER_PREFIX-$CONTAINER_REDIS.service
|
"$CONTAINER_SERVER",
|
||||||
fi
|
"$CONTAINER_POSTGRES",
|
||||||
|
"$CONTAINER_REDIS"
|
||||||
|
)
|
||||||
|
|
||||||
if ! podman network exists $NETWORK; then
|
for container in "${containers[@]}"; do
|
||||||
podman network create $NETWORK
|
if podman container exists "$containers"; then
|
||||||
|
echo "Stop and delete existing container $containers"
|
||||||
|
if podman inspect -f '{{.State.Running}}' "$containers" | grep -q true; then
|
||||||
|
podman stop "$containers"
|
||||||
fi
|
fi
|
||||||
|
podman rm "$containers"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
mkdir -p ./systemd-units
|
mkdir -p ./systemd-units
|
||||||
podman create \
|
podman create \
|
||||||
@@ -137,3 +150,20 @@ EOF
|
|||||||
echo "$BACKEND_CFG" | sudo tee $SERVICE_DIR/backend.block > /dev/null
|
echo "$BACKEND_CFG" | sudo tee $SERVICE_DIR/backend.block > /dev/null
|
||||||
|
|
||||||
sudo loginctl enable-linger $USER
|
sudo loginctl enable-linger $USER
|
||||||
|
|
||||||
|
echo "Generate backup script"
|
||||||
|
BACKUP_FILE="affine_backup.sh"
|
||||||
|
cp backup.sh $BACKUP_FILE
|
||||||
|
sed -i "s|^UPLOAD=\"\"|UPLOAD=\"$UPLOAD_LOCATION\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^CONFIG=\"\"|CONFIG=\"$CONFIG_LOCATION\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB_USERNAME=\"\"|DB_USERNAME=\"$DB_USERNAME\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^DB_DATABASE=\"\"|DB_DATABASE=\"$DB_DATABASE\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^LOCAL_BACKUP=\"\$HOME/.local/backup\"|LOCAL_BACKUP=\"\$HOME/.local/backup/$CONTAINER_PREFIX\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^CONTAINER_POSTGRES=\"\"|CONTAINER_POSTGRES=\"$CONTAINER_POSTGRES\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^REMOTE=\"\"|REMOTE=\"$BACKUP_REMOTE\"|" "$BACKUP_FILE"
|
||||||
|
sed -i "s|^SERVICE_SERVER=\"\"|SERVICE_SERVER=\"${CONTAINER_PREFIX}-${CONTAINER_SERVER}.service\"|" "$BACKUP_FILE"
|
||||||
|
|
||||||
|
mv $BACKUP_FILE $AFFINE_ROOT
|
||||||
|
(crontab -l 2>/dev/null; echo "0 3 * * * $AFFINE_ROOT/$BACKUP_FILE") | crontab -
|
||||||
|
|
||||||
|
echo "Deploy completed, manually run haproxy to generate new config."
|
||||||
52
affine/uninstall.sh
Executable file
52
affine/uninstall.sh
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
. ./env.sh
|
||||||
|
|
||||||
|
services=(
|
||||||
|
"$CONTAINER_PREFIX-$CONTAINER_SERVER.service"
|
||||||
|
"$CONTAINER_PREFIX-$CONTAINER_POSTGRES.service"
|
||||||
|
"$CONTAINER_PREFIX-$CONTAINER_REDIS.service"
|
||||||
|
)
|
||||||
|
|
||||||
|
for service in "${services[@]}"; do
|
||||||
|
if systemctl --user list-units --full --all | grep -q "$service"; then
|
||||||
|
echo "Stopping $service..."
|
||||||
|
systemctl --user stop $service
|
||||||
|
echo "$service stopped."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
containers=(
|
||||||
|
"$CONTAINER_SERVER",
|
||||||
|
"$CONTAINER_POSTGRES",
|
||||||
|
"$CONTAINER_REDIS"
|
||||||
|
)
|
||||||
|
|
||||||
|
for container in "${containers[@]}"; do
|
||||||
|
if podman container exists "$containers"; then
|
||||||
|
echo "Stop and delete existing container $containers"
|
||||||
|
if podman inspect -f '{{.State.Running}}' "$containers" | grep -q true; then
|
||||||
|
podman stop "$containers"
|
||||||
|
fi
|
||||||
|
podman rm "$containers"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for service in "${services[@]}"; do
|
||||||
|
systemctl --user disable --now $service
|
||||||
|
rm $USER_SYSTEMD/$service
|
||||||
|
done
|
||||||
|
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
|
||||||
|
sudo rm -r $SERVICE_DIR
|
||||||
|
crontab -l | grep -v "$AFFINE_ROOT/$BACKUP_FILE" | crontab -
|
||||||
|
|
||||||
|
echo "Uninstall complete. Manually run haproxy config to rebuild config. Manually remove data directory
|
||||||
|
- $AFFINE_ROOT
|
||||||
|
- $DB_DATA_LOCATION
|
||||||
|
- $UPLOAD_LOCATION
|
||||||
|
- $CONFIG_LOCATION
|
||||||
|
if needed."
|
||||||
Reference in New Issue
Block a user