98 lines
2.9 KiB
Bash
98 lines
2.9 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Bitnami MinIO Client library
|
|
|
|
# Functions
|
|
|
|
########################
|
|
# Load global variables used on MinIO Client configuration
|
|
# Globals:
|
|
# MINIO_CLIENT_*
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# Series of exports to be used as 'eval' arguments
|
|
#########################
|
|
minio_client_env() {
|
|
cat <<"EOF"
|
|
export MINIO_CLIENT_BASEDIR="/opt/bitnami/minio-client"
|
|
export MINIO_CLIENT_CONFIGDIR="/.mc"
|
|
export MINIO_SERVER_HOST="${MINIO_SERVER_HOST:-}"
|
|
export MINIO_SERVER_PORT_NUMBER="${MINIO_SERVER_PORT_NUMBER:-9000}"
|
|
export MINIO_SERVER_ACCESS_KEY="${MINIO_SERVER_ACCESS_KEY:-}"
|
|
export MINIO_SERVER_SECRET_KEY="${MINIO_SERVER_SECRET_KEY:-}"
|
|
export PATH="${MINIO_CLIENT_BASEDIR}/bin:$PATH"
|
|
EOF
|
|
}
|
|
|
|
########################
|
|
# Execute an arbitrary MinIO client command
|
|
# Globals:
|
|
# MINIO_CLIENT_CONFIGDIR
|
|
# Arguments:
|
|
# $@ - Command to execute
|
|
# Returns:
|
|
# None
|
|
minio_client_execute() {
|
|
local args=("--config-dir" "${MINIO_CLIENT_CONFIGDIR}" "--quiet" "$@")
|
|
local exec
|
|
exec=$(command -v mc)
|
|
|
|
"${exec}" "${args[@]}"
|
|
}
|
|
|
|
########################
|
|
# Execute an arbitrary MinIO client command with a 2s timeout
|
|
# Globals:
|
|
# MINIO_CLIENT_CONFIGDIR
|
|
# Arguments:
|
|
# $@ - Command to execute
|
|
# Returns:
|
|
# None
|
|
minio_client_execute_timeout() {
|
|
local args=("--config-dir" "${MINIO_CLIENT_CONFIGDIR}" "--quiet" "$@")
|
|
local exec
|
|
exec=$(command -v mc)
|
|
|
|
timeout 2s "${exec}" "${args[@]}"
|
|
}
|
|
|
|
########################
|
|
# Configure MinIO Client to use a MinIO server
|
|
# Globals:
|
|
# MINIO_SERVER_*
|
|
# Arguments:
|
|
# None
|
|
# Returns:
|
|
# Series of exports to be used as 'eval' arguments
|
|
#########################
|
|
minio_client_configure_server() {
|
|
if [[ -n "$MINIO_SERVER_HOST" ]] && [[ -n "$MINIO_SERVER_ACCESS_KEY" ]] && [[ -n "$MINIO_SERVER_SECRET_KEY" ]]; then
|
|
info "Adding Minio host to 'mc' configuration..."
|
|
minio_client_execute config host add minio "http://${MINIO_SERVER_HOST}:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ACCESS_KEY}" "${MINIO_SERVER_SECRET_KEY}"
|
|
fi
|
|
}
|
|
|
|
########################
|
|
# Configure MinIO Client to use a local MinIO server
|
|
# Arguments:
|
|
# $1 - MinIO server config_file
|
|
# Returns:
|
|
# Series of exports to be used as 'eval' arguments
|
|
#########################
|
|
minio_client_configure_local() {
|
|
local config_file="${1:?missing config_file}"
|
|
local access_key
|
|
local secret_key
|
|
|
|
info "Adding local Minio host to 'mc' configuration..."
|
|
if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then
|
|
# Access keys are set via environment variables in Distributed Mode
|
|
minio_client_execute config host add local "http://localhost:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ACCESS_KEY}" "${MINIO_SERVER_SECRET_KEY}"
|
|
else
|
|
access_key="$(jq -r .credential.accessKey < "${config_file}")"
|
|
secret_key="$(jq -r .credential.secretKey < "${config_file}")"
|
|
minio_client_execute config host add local "http://localhost:${MINIO_SERVER_PORT_NUMBER}" "${access_key}" "${secret_key}"
|
|
fi
|
|
}
|