Import configuration files in haproxy.cfg
I have almost 200 lines of ACL configurations in haprox.cfg
and also contains 150 backends.
To remove this configuration complexity, I want to bundle this configuration in separate files and will import those files in haprox.cfg
.
Is this possible in haproxy?
As far as I know HAproxy does not have anything similar to apache's Include & IncludeOptional
directives.
There is no native support for multiple configuration files other than starting HAproxy with repeated -f <config-file>
command line switches. see this thread.
You can script something though to merge multiple subsections into a larger file similar to this approach although I would probably go the route and modify the init script to append additional configuration files automatically (untested):
# Load additional configuration snippets from /etc/haproxy.d/*.cfg
OPTIONS=""
for file in /etc/haproxy.d/*.cfg ; do test -f $file && OPTIONS="$OPTIONS -f $file" ; done
start() {
/usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors found in configuration file, check it with '$BASENAME check'."
return 1
fi
echo -n "Starting $BASENAME: "
daemon /usr/sbin/$BASENAME -D -f /etc/$BASENAME/$BASENAME.cfg $OPTIONS -p /var/run/$BASENAME.pid
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
return $RETVAL
}
I see the version 1.7.5-2 2017/05/17 has the following help:
-f <configuration file|dir>
Specify configuration file or directory path. If the argument is a directory the files (and only files) it contains
are added in lexical order (using LC_COLLATE=C) ; only non hidden files with ".cfg" extension are added.
So in my case editing /etc/default/haproxy
so that it contains
CONFIG="/etc/haproxy/"
enables me to put more .cfg files in /etc/haproxy
and all is read and configured.