wal-g: Provide a to-local-disk backup option.

This commit is contained in:
Alex Vandiver
2024-03-18 19:27:39 +00:00
committed by Tim Abbott
parent 6fc3357a88
commit 44ff1c24df
5 changed files with 117 additions and 55 deletions

View File

@@ -4,27 +4,36 @@ if [ -z "$ZULIP_SECRETS_CONF" ]; then
fi
export PGHOST=/var/run/postgresql/
AWS_REGION=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_region 2>/dev/null)
if [ "$AWS_REGION" = "" ]; then
# Fall back to the current region, if possible
AZ=$(ec2metadata --availability-zone || true)
if [ -n "$AZ" ] && [ "$AZ" != "unavailable" ]; then
AWS_REGION=$(echo "$AZ" | sed 's/.$//')
fi
fi
export AWS_REGION
AWS_ACCESS_KEY_ID=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_key 2>/dev/null)
export AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_secret_key 2>/dev/null)
export AWS_SECRET_ACCESS_KEY
if ! s3_backups_bucket=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_bucket 2>&1); then
echo "Could not determine which s3 bucket to use:" "$s3_backups_bucket"
exit 1
fi
export WALG_S3_PREFIX="s3://$s3_backups_bucket"
if storage_class=$(crudini --get /etc/zulip/zulip.conf postgresql backups_storage_class 2>&1); then
export WALG_S3_STORAGE_CLASS="$storage_class"
s3_backups_bucket=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_bucket 2>/dev/null)
if [ "$s3_backups_bucket" != "" ]; then
AWS_REGION=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_region 2>/dev/null)
if [ "$AWS_REGION" = "" ]; then
# Fall back to the current region, if possible
AZ=$(ec2metadata --availability-zone || true)
if [ -n "$AZ" ] && [ "$AZ" != "unavailable" ]; then
AWS_REGION=$(echo "$AZ" | sed 's/.$//')
fi
fi
export AWS_REGION
AWS_ACCESS_KEY_ID=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_key 2>/dev/null)
export AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY=$(crudini --get "$ZULIP_SECRETS_CONF" secrets s3_backups_secret_key 2>/dev/null)
export AWS_SECRET_ACCESS_KEY
export WALG_S3_PREFIX="s3://$s3_backups_bucket"
if storage_class=$(crudini --get /etc/zulip/zulip.conf postgresql backups_storage_class 2>&1); then
export WALG_S3_STORAGE_CLASS="$storage_class"
fi
else
WALG_FILE_PREFIX=$(crudini --get /etc/zulip/zulip.conf postgresql backups_directory 2>/dev/null)
if [ "$WALG_FILE_PREFIX" != "" ]; then
export WALG_FILE_PREFIX
else
echo "Could not determine where to back up data to!"
exit 1
fi
fi
exec /usr/local/bin/wal-g "$@"

View File

@@ -50,6 +50,16 @@ class zulip::postgresql_backups {
],
}
$postgresql_backup_directory = zulipconf('postgresql', 'backups_directory', '')
if $postgresql_backup_directory != '' {
file { $postgresql_backup_directory:
ensure => directory,
owner => 'postgres',
group => 'postgres',
mode => '0600',
}
}
file { "${zulip::common::nagios_plugins_dir}/zulip_postgresql_backups":
require => Package[$zulip::common::nagios_plugins],
recurse => true,

View File

@@ -100,8 +100,9 @@ class zulip::postgresql_base {
}
}
$s3_backups_bucket = zulipsecret('secrets', 's3_backups_bucket', '')
if $s3_backups_bucket != '' {
$backups_s3_bucket = zulipsecret('secrets', 's3_backups_bucket', '')
$backups_directory = zulipconf('postgresql', 'backups_directory', '')
if $backups_s3_bucket != '' or $backups_directory != '' {
include zulip::postgresql_backups
}
}