Skip to content

Instantly share code, notes, and snippets.

@daipham3213
Last active August 19, 2022 03:37
Show Gist options
  • Save daipham3213/6a1f03f9450003474bb52632f0c6b015 to your computer and use it in GitHub Desktop.
Save daipham3213/6a1f03f9450003474bb52632f0c6b015 to your computer and use it in GitHub Desktop.
#!/bin/bash
#
# lib/cinder_backups/s3
# Configure the s3 backup driver for external s3 compatible storage
# Enable with:
#
# CINDER_BACKUP_DRIVER=s3
# enable_service c-bak
# Dependencies:
#
# - ``functions`` file
# - ``cinder`` configurations
# Save trace setting
_XTRACE_CINDER_S3=$(set +o | grep xtrace)
set +o xtrace
function configure_cinder_backup_s3 {
iniset $CINDER_CONF DEFAULT backup_driver "cinder.backup.drivers.s3.S3BackupDriver"
if [[ -z "$S3_REST_ENDPOINT" ]]; then
die "Config value S3_REST_ENDPOINT is not set"
fi
iniset $CINDER_CONF DEFAULT backup_s3_endpoint_url $S3_REST_ENDPOINT
if [[ -z "$S3_STORE_BUCKET" ]]; then
die "Config value S3_STORE_BUCKET is not set"
fi
iniset $CINDER_CONF DEFAULT backup_s3_store_bucket $S3_STORE_BUCKET
if [[ -z "$S3_ACCESS_KEY" ]]; then
die "Config value S3_ACCESS_KEY is not set"
fi
iniset $CINDER_CONF DEFAULT backup_s3_store_access_key $S3_ACCESS_KEY
if [[ -z "$S3_SECRET_KEY" ]]; then
die "Config value S3_SECRET_KEY is not set"
fi
iniset $CINDER_CONF DEFAULT backup_s3_store_secret_key $S3_SECRET_KEY
iniset $CINDER_CONF DEFAULT backup_compression_algorithm ${COMPRESSION_ALGRITHM:-zstd}
iniset $CINDER_CONF DEFAULT backup_file_size ${BACKUP_FILE_SIZE:-1999994880}
iniset $CINDER_CONF DEFAULT backup_workers ${BACKUP_WORKER:-4}
iniset $CINDER_CONF DEFAULT thread_pool_size ${BACKUP_THREAD_POOL_SIZE:-6}
iniset $CINDER_CONF DEFAULT backup_max_operations ${BACKUP_MAX_OPERATIONS:-15}
iniset $CINDER_CONF DEFAULT backup_native_threads_pool_size ${BACKUP_NATIVE_THREAD_POOL_SIZE:-120}
iniset $CINDER_CONF DEFAULT backup_enable_progress_timer ${BACKUP_PROGRESS_TIMER:-false}
iniset $CINDER_CONF DEFAULT restore_discard_excess_bytes ${RESTORE_DISCARD_EXCESS_BYTES:-true}
iniset $CINDER_CONF DEFAULT backup_s3_timeout ${S3_TIMEOUT:-60}
iniset $CINDER_CONF DEFAULT backup_s3_verify_ssl ${S3_VERIFY_SSL:-false}
iniset $CINDER_CONF DEFAULT backup_s3_block_size ${S3_BLOCK_SIZE:-32768}
iniset $CINDER_CONF DEFAULT backup_s3_max_pool_connections ${S3_MAX_POOL_CONNECTIONS:-100}
iniset $CINDER_CONF DEFAULT backup_s3_md5_validation ${S3_MD5_VALIDATION:-false}
iniset $CINDER_CONF DEFAULT backup_s3_object_size ${S3_OBJECT_SIZE:-1999994880}
iniset $CINDER_CONF DEFAULT backup_s3_block_sizebackup_s3_retry_max_attempts ${S3_RETRY_ATTEMPTS:-4}
iniset $CINDER_CONF DEFAULT backup_s3_block_sizebackup_s3_retry_mode ${S3_RETRY_MODE:-legacy}
}
function init_cinder_backup_s3 {
if is_service_enabled tls-proxy; then
iniset $CINDER_CONF DEFAULT backup_s3_ca_cert_file "$SSL_BUNDLE_FILE"
fi
}
# Restore xtrace
$_XTRACE_CINDER_S3
# Local variables:
# mode: shell-script
# End:
@daipham3213
Copy link
Author

Required configs

  • S3_REST_ENDPOINT: url to s3 bucket
  • S3_STORE_BUCKET: s3 bucket name
  • S3_ACCESS_KEY: s3 bucket access key
  • S3_SECRET_KEY: s3 bucket secret key

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment