provisioning/taskservs/proxy/default/install-proxy.sh

108 lines
3.5 KiB
Bash
Raw Normal View History

#!/bin/bash
# Info: Script to install proxy
# Author: JesusPerezLorenzo
# Release: 1.0
# Date: 12-12-2023
USAGE="install-proxy.sh "
[ "$1" == "-h" ] && echo "$USAGE" && exit 1
[ -r "global.sh" ] && . ./global.sh
[ -r "env-proxy" ] && . ./env-proxy
VERSION=${PROXY_VERSION:-2.9}
CMD_TSKSRVC=${1:-install}
PROXY_RUN_USER=${PROXY_RUN_USER:-haproxy}
PROXY_RUN_GROUP=${PROXY_RUN_GROUP:-haproxy}
PROXY_RUN_USER_HOME="${PROXY_RUN_USER_HOME:-/home/haproxy}"
export LC_CTYPE=C.UTF-8
export LANG=C.UTF-8
_init() {
[ -z "$VERSION" ] && exit 1
curr_vers=$(haproxy -v 2>/dev/null | grep HA-Proxy | cut -f3 -d" " | cut -f1-2 -d".")
[ "$curr_vers" == "$VERSION" ] && return
curl -s https://haproxy.debian.net/bernat.debian.org.gpg \
| sudo gpg --dearmor | sudo tee /usr/share/keyrings/haproxy.debian.net.gpg >/dev/null
sudo echo deb "[signed-by=/usr/share/keyrings/haproxy.debian.net.gpg]" \
http://haproxy.debian.net bookworm-backports-${VERSION} main \
# > /etc/apt/sources.list.d/haproxy.list
#sudo add-apt-repository -y ppa:vbernat/haproxy-${VERSION}
#local codename=$(grep VERSION_CODENAME /etc/os-release | cut -f2 -d"=" )
#if [ "$codename" == "bookworm" ] ; then
# su -c 'echo "APT::Get::Update::SourceListWarnings::NonFreeFirmware \"false\";" > /etc/apt/apt.conf.d/no-bookworm-firmware.conf'
#fi
# Create the file repository configuration:
# https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split
sudo DEBIAN_FRONTEND=noninteractive apt-get update
# sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
#sudo DEBIAN_FRONTEND=noninteractive apt install -y haproxy=${VERSION}.\\* >/dev/null 2>&1
sudo DEBIAN_FRONTEND=noninteractive apt install -y haproxy >/dev/null 2>&1
}
_config_proxy() {
# started via /etc/rc2.d/S01haproxy
# if not user/group haproxy created
local has_user=""
has_user=$(grep "$PROXY_RUN_USER" /etc/passwd)
if [ -z "$has_user" ] ; then
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'Haproxy' \
--group \
--disabled-password \
--home /home/haproxy \
"${PROXY_RUN_USER}"
fi
if [ ! -d "$PROXY_RUN_USER_HOME" ] ; then
sudo mkdir -p "$PROXY_RUN_USER_HOME"
sudo chown -R "$PROXY_RUN_USER":"$PROXY_RUN_GROUP" "$PROXY_RUN_USER_HOME"
fi
[ -d "errors" ] && sudo cp -pr errors ${PROXY_ETC_PATH} && sudo chown "${PROXY_RUN_USER}:${PROXY_RUN_GROUP}" "${PROXY_ETC_PATH}"/errors
[ -r "haproxy.cfg" ] && sudo cp haproxy.cfg "$PROXY_ETC_PATH/$PROXY_CONFIG_FILE" && sudo chown "${PROXY_RUN_USER}:${PROXY_RUN_GROUP}" "$PROXY_ETC_PATH/$PROXY_CONFIG_FILE"
}
_stop_proxy() {
sudo timeout -k 10 20 systemctl stop haproxy >/dev/null 2>&1
sudo timeout -k 10 20 systemctl disable haproxy >/dev/null 2>&1
}
_remove_proxy() {
sudo timeout -k 10 20 systemctl stop haproxy >/dev/null 2>&1
sudo timeout -k 10 20 systemctl disable haproxy >/dev/null 2>&1
sudo apt remove -y haproxy
}
_start_proxy() {
sudo timeout -k 10 20 systemctl enable haproxy >/dev/null 2>&1
sudo timeout -k 10 20 systemctl restart haproxy >/dev/null 2>&1
}
_restart_proxy() {
sudo timeout -k 10 20 systemctl restart haproxy.service >/dev/null 2>&1
sudo timeout -k 10 20 systemctl status haproxy.service >/dev/null 2>&1
}
if [ "$CMD_TSKSRVC" == "remove" ] ; then
_remove_proxy
exit
fi
if ! _init ; then
echo "error proxy init"
exit 1
fi
[ "$CMD_TSKSRVC" == "update" ] && _restart_proxy && exit 0
if ! _config_proxy ; then
echo "error proxy config"
exit 1
fi
if ! _start_proxy ; then
echo "error proxy start"
exit 1
fi
exit 0