diff --git a/bitnami/spark/2/debian-10/Dockerfile b/bitnami/spark/2/debian-10/Dockerfile index 8354ca256c9e..0c70c241e20a 100644 --- a/bitnami/spark/2/debian-10/Dockerfile +++ b/bitnami/spark/2/debian-10/Dockerfile @@ -20,11 +20,11 @@ RUN useradd -r -u 1001 -g root spark COPY rootfs / RUN /postunpack.sh ENV BITNAMI_APP_NAME="spark" \ - BITNAMI_IMAGE_VERSION="2.4.5-debian-10-r32" \ + BITNAMI_IMAGE_VERSION="2.4.5-debian-10-r33" \ JAVA_HOME="/opt/bitnami/java" \ NSS_WRAPPER_GROUP="/opt/bitnami/spark/tmp/nss_group" \ NSS_WRAPPER_PASSWD="/opt/bitnami/spark/tmp/nss_passwd" \ - PATH="/opt/bitnami/python/bin:/opt/bitnami/java/bin:/opt/bitnami/spark/bin:/opt/bitnami/spark/sbin:/opt/bitnami/gosu/bin:$PATH" \ + PATH="/opt/bitnami/python/bin:/opt/bitnami/java/bin:/opt/bitnami/spark/bin:/opt/bitnami/spark/sbin:/opt/bitnami/common/bin:$PATH" \ SPARK_HOME="/opt/bitnami/spark" WORKDIR /opt/bitnami/spark diff --git a/bitnami/spark/2/debian-10/prebuildfs/libbitnami.sh b/bitnami/spark/2/debian-10/prebuildfs/libbitnami.sh index 529c3fd4a3e2..ec789d8227eb 100644 --- a/bitnami/spark/2/debian-10/prebuildfs/libbitnami.sh +++ b/bitnami/spark/2/debian-10/prebuildfs/libbitnami.sh @@ -1,9 +1,10 @@ #!/bin/bash +# shellcheck disable=SC1090 # # Bitnami custom library # Load Generic Libraries -. /liblog.sh +. "${BITNAMI_SCRIPTS_DIR:-}"/liblog.sh # Constants BOLD='\033[1m' diff --git a/bitnami/spark/2/debian-10/prebuildfs/libfs.sh b/bitnami/spark/2/debian-10/prebuildfs/libfs.sh index 10a24735c096..1a1fc5522dec 100644 --- a/bitnami/spark/2/debian-10/prebuildfs/libfs.sh +++ b/bitnami/spark/2/debian-10/prebuildfs/libfs.sh @@ -1,9 +1,10 @@ #!/bin/bash +# shellcheck disable=SC1090 # # Library for file system actions # Load Generic Libraries -. /liblog.sh +. "${BITNAMI_SCRIPTS_DIR:-}"/liblog.sh # Functions diff --git a/bitnami/spark/2/debian-10/prebuildfs/liblog.sh b/bitnami/spark/2/debian-10/prebuildfs/liblog.sh index 04118273394a..1285b05ba344 100644 --- a/bitnami/spark/2/debian-10/prebuildfs/liblog.sh +++ b/bitnami/spark/2/debian-10/prebuildfs/liblog.sh @@ -20,7 +20,13 @@ CYAN='\033[38;5;6m' # None ######################### stderr_print() { - printf "%b\\n" "${*}" >&2 + # 'is_boolean_yes' is defined in libvalidations.sh, but depends on this file so we cannot source it + local -r bool="${BITNAMI_QUIET:-false}" + # comparison is performed without regard to the case of alphabetic characters + shopt -s nocasematch + if ! [[ "$bool" = 1 || "$bool" =~ ^(yes|true)$ ]]; then + printf "%b\\n" "${*}" >&2 + fi } ######################## diff --git a/bitnami/spark/2/debian-10/prebuildfs/libos.sh b/bitnami/spark/2/debian-10/prebuildfs/libos.sh index 1a5ba3bb2a64..041581ca0655 100644 --- a/bitnami/spark/2/debian-10/prebuildfs/libos.sh +++ b/bitnami/spark/2/debian-10/prebuildfs/libos.sh @@ -1,7 +1,11 @@ #!/bin/bash +# shellcheck disable=SC1090 # # Library for operating system actions +# Load Generic Libraries +. "${BITNAMI_SCRIPTS_DIR:-}"/liblog.sh + # Functions ######################## @@ -56,11 +60,12 @@ ensure_user_exists() { local group="${2:-}" if ! user_exists "$user"; then - useradd "$user" >/dev/null 2>&1 - if [[ -n "$group" ]]; then - ensure_group_exists "$group" - usermod -a -G "$group" "$user" >/dev/null 2>&1 - fi + useradd "$user" >/dev/null 2>&1 + fi + + if [[ -n "$group" ]]; then + ensure_group_exists "$group" + usermod -a -G "$group" "$user" >/dev/null 2>&1 fi } @@ -91,6 +96,74 @@ get_total_memory() { echo $(($(grep MemTotal /proc/meminfo | awk '{print $2}') / 1024)) } +######################## +# Get machine size depending on specified memory +# Globals: +# None +# Arguments: +# $1 - memory size (optional) +# Returns: +# Detected instance size +######################### +get_machine_size() { + local memory="${1:-}" + if [[ -z "$memory" ]]; then + debug "Memory was not specified, detecting available memory automatically" + memory="$(get_total_memory)" + fi + sanitized_memory=$(convert_to_mb "$memory") + if [[ "$sanitized_memory" -gt 26000 ]]; then + echo 2xlarge + elif [[ "$sanitized_memory" -gt 13000 ]]; then + echo xlarge + elif [[ "$sanitized_memory" -gt 6000 ]]; then + echo large + elif [[ "$sanitized_memory" -gt 3000 ]]; then + echo medium + elif [[ "$sanitized_memory" -gt 1500 ]]; then + echo small + else + echo micro + fi +} + +######################## +# Get machine size depending on specified memory +# Globals: +# None +# Arguments: +# $1 - memory size (optional) +# Returns: +# Detected instance size +######################### +get_supported_machine_sizes() { + echo micro small medium large xlarge 2xlarge +} + +######################## +# Convert memory size from string to amount of megabytes (i.e. 2G -> 2048) +# Globals: +# None +# Arguments: +# $1 - memory size +# Returns: +# Result of the conversion +######################### +convert_to_mb() { + local amount="${1:-}" + if [[ $amount =~ ^([0-9]+)(M|G) ]]; then + size="${BASH_REMATCH[1]}" + unit="${BASH_REMATCH[2]}" + if [[ "$unit" = "G" ]]; then + amount="$((size * 1024))" + else + amount="$size" + fi + fi + echo "$amount" +} + + ######################### # Redirects output to /dev/null if debug mode is disabled # Globals: diff --git a/bitnami/spark/2/debian-10/prebuildfs/libservice.sh b/bitnami/spark/2/debian-10/prebuildfs/libservice.sh index 0a83cd3d927f..35c0163a9ef1 100644 --- a/bitnami/spark/2/debian-10/prebuildfs/libservice.sh +++ b/bitnami/spark/2/debian-10/prebuildfs/libservice.sh @@ -17,7 +17,7 @@ get_pid_from_file() { if [[ -f "$pid_file" ]]; then if [[ -n "$(< "$pid_file")" ]] && [[ "$(< "$pid_file")" -gt 0 ]]; then echo "$(< "$pid_file")" - fi + fi fi } @@ -55,3 +55,61 @@ stop_service_using_pid() { counter=$((counter - 1)) done } + +######################## +# Generate a monit configuration file for a given service +# Arguments: +# $1 - Service name +# $2 - Pid file +# $3 - Start command +# $4 - Stop command +# Returns: +# None +######################### +generate_monit_conf() { + local -r service_name="${1:?service name is missing}" + local -r pid_file="${2:?pid file is missing}" + local -r start_command="${3:?start command is missing}" + local -r stop_command="${4:?stop command is missing}" + local -r monit_conf_dir="/etc/monit/conf.d" + + mkdir -p "$monit_conf_dir" + cat >"${monit_conf_dir}/${service_name}.conf" <"${logrotate_conf_dir}/${service_name}" <