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.