mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-05 06:27:37 +00:00
Add support for profiles (to start several haproxy instances each with it's own
config).
This commit is contained in:
parent
3fd082fa72
commit
c8c1295b33
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=373495
@ -3,6 +3,7 @@
|
||||
|
||||
PORTNAME= haproxy
|
||||
PORTVERSION= 1.5.9
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= net www
|
||||
MASTER_SITES= http://www.haproxy.org/download/1.5/src/
|
||||
|
||||
|
@ -7,73 +7,92 @@
|
||||
# REQUIRE: DAEMON LOGIN
|
||||
# KEYWORD: shutdown
|
||||
|
||||
#######
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf to enable haproxy:
|
||||
#
|
||||
# haproxy_enable (bool): default: "NO"
|
||||
# Set to "YES" to enable haproxy
|
||||
# haproxy_pidfile (str): default: /var/run/${name}.pid
|
||||
# haproxy_pidfile (str): default: /var/run/haproxy.pid
|
||||
# Set to the full path of the pid file
|
||||
# haproxy_config (str): default: /usr/local/etc/${name}.conf
|
||||
# haproxy_config (str): default: %%PREFIX%%/etc/haproxy.conf
|
||||
# Set to the full path of the config file
|
||||
# haproxy_flags (str): default: Autogenerated using pidfile and config options
|
||||
# Set to override with your own options
|
||||
#
|
||||
#######
|
||||
#
|
||||
# rc.d Script Runtime Options:
|
||||
#
|
||||
# start - starts application normally
|
||||
# stop - (softstop) stops all proxies and exits once all sessions are closed
|
||||
# forcestop - (immediate) stops all proxies and kills active sessions
|
||||
# reload - hot-reconfig using "-sf" option (active sessions kept)
|
||||
# forcereload - hot-reconfig using "-st" option (active sessions killed)
|
||||
# restart - equiv to "stop" then "start"
|
||||
# configtest - checks configuration file defined in haproxy_config
|
||||
#
|
||||
#######
|
||||
# haproxy_profiles (str): default: empty
|
||||
# Set to space-separated list of profiles: for each profile separate haproxy
|
||||
# process will be spawned, with haproxy-${profile}.conf config file.
|
||||
# You can override default pidfile and config file for each profile with
|
||||
# haproxy_${profile}_config and haproxy_${profile}_pidfile.
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="haproxy"
|
||||
rcvar=haproxy_enable
|
||||
command="%%PREFIX%%/sbin/haproxy"
|
||||
|
||||
# Load Configs/Set Defaults
|
||||
load_rc_config $name
|
||||
: ${haproxy_enable:="NO"}
|
||||
pidfile=${haproxy_pidfile:-"/var/run/haproxy.pid"}
|
||||
: ${haproxy_config:="%%PREFIX%%/etc/${name}.conf"}
|
||||
: ${haproxy_flags="-q -f ${haproxy_config} -p ${pidfile}"}
|
||||
procname=${command}
|
||||
|
||||
# Update the globals
|
||||
required_files=$haproxy_config
|
||||
|
||||
# Commands: start, stop, restart, reload, configtest
|
||||
extra_commands="reload configtest"
|
||||
|
||||
configtest_cmd="$command -c -f $haproxy_config"
|
||||
start_precmd="$command -q -c -f $haproxy_config"
|
||||
reload_cmd="haproxy_reload"
|
||||
|
||||
# For stopping, SIGUSR1 = softstop, SIGTERM = faststop
|
||||
sig_stop=${rc_force:-USR1}
|
||||
: ${haproxy_enable:="NO"}
|
||||
: ${haproxy_config:="%%PREFIX%%/etc/${name}.conf"}
|
||||
pidfile=${haproxy_pidfile:-"/var/run/haproxy.pid"}
|
||||
|
||||
if [ -z "$rc_force" ]; then
|
||||
sig_stop="USR1"
|
||||
fi
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
is_valid_profile() {
|
||||
local profile
|
||||
for profile in $haproxy_profiles; do
|
||||
if [ "$profile" = "$1" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ -n "$2" ]; then
|
||||
profile=$2
|
||||
if ! is_valid_profile $profile; then
|
||||
echo "$0: no such profile ($profile) defined in ${name}_profiles."
|
||||
exit 1
|
||||
fi
|
||||
eval haproxy_config="\${haproxy_${profile}_config:-%%PREFIX%%/etc/haproxy-${profile}.conf}"
|
||||
eval pidfile="\${haproxy_${profile}_pidfile:-/var/run/haproxy-${profile}.pid}"
|
||||
else
|
||||
if [ "x${haproxy_profiles}" != "x" -a "x$1" != "x" ]; then
|
||||
for profile in ${haproxy_profiles}; do
|
||||
echo "===> ${name} profile: ${profile}"
|
||||
%%PREFIX%%/etc/rc.d/haproxy $1 ${profile}
|
||||
retcode="$?"
|
||||
if [ ${retcode} -ne 0 ]; then
|
||||
failed="${profile} (${retcode}) ${failed:-}"
|
||||
else
|
||||
success="${profile} ${success:-}"
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
: ${haproxy_flags:="-q -f ${haproxy_config} -p ${pidfile}"}
|
||||
configtest_cmd="$command -c -f $haproxy_config"
|
||||
start_precmd="$command -q -c -f $haproxy_config"
|
||||
required_files=$haproxy_config
|
||||
|
||||
haproxy_reload()
|
||||
{
|
||||
# Check configuration file quietly first
|
||||
${command} -q -c -f ${haproxy_config}
|
||||
if [ $? -ne 0 ]; then
|
||||
err 1 "Error found in ${haproxy_config} - not reloading current process!"
|
||||
fi
|
||||
rc_pid=$(check_pidfile ${pidfile} ${command})
|
||||
if [ $rc_pid ]; then
|
||||
if [ $rc_force ]; then
|
||||
${command} ${haproxy_flags} -st $(cat ${pidfile})
|
||||
else
|
||||
if [ -z "$rc_force" ]; then
|
||||
${command} ${haproxy_flags} -sf $(cat ${pidfile})
|
||||
else
|
||||
${command} ${haproxy_flags} -st $(cat ${pidfile})
|
||||
fi
|
||||
else
|
||||
_run_rc_notrunning
|
||||
|
Loading…
Reference in New Issue
Block a user