267e27680a
With this PR the haproxy.config state will actually render a valid haproxy.cfg from default values, even when the values are not explicitely passed via the pillar. Right now, an invalid cfg is generated which breaks haproxy on startup.
218 lines
7.3 KiB
Django/Jinja
218 lines
7.3 KiB
Django/Jinja
# HAProxy configuration
|
|
#
|
|
# **** DO NOT EDIT THIS FILE ****
|
|
#
|
|
# This file is managed by Salt.
|
|
# Any changes will be overwritten.
|
|
|
|
|
|
#------------------
|
|
# Global settings
|
|
#------------------
|
|
global
|
|
log /dev/log local0
|
|
log /dev/log local1 notice
|
|
user {{ salt['pillar.get']('haproxy:global:user', 'haproxy') }}
|
|
group {{ salt['pillar.get']('haproxy:global:group', 'haproxy') }}
|
|
{%- if salt['pillar.get']('haproxy:global:chroot:enable', 'no') == True %}
|
|
chroot {{ salt['pillar.get']('haproxy:global:chroot:path', '/tmp') }}
|
|
{%- endif %}
|
|
{%- if salt['pillar.get']('haproxy:global:daemon', 'no') == True %}
|
|
daemon
|
|
{%- endif %}
|
|
{% if salt['pillar.get']('haproxy:global:stats:enable', 'no') == True %}
|
|
# Stats support is currently limited to socket mode
|
|
stats socket {{ salt['pillar.get']('haproxy:global:stats:socketpath', '/tmp/ha_stats.sock') }}
|
|
{%- endif %}
|
|
|
|
|
|
#------------------
|
|
# common defaults that all the 'listen' and 'backend' sections will
|
|
# use- if not designated in their block
|
|
#------------------
|
|
defaults
|
|
log {{ salt['pillar.get']('haproxy:defaults:log', 'global')}}
|
|
mode {{ salt['pillar.get']('haproxy:defaults:mode', 'http') }}
|
|
retries {{ salt['pillar.get']('haproxy:defaults:retries', '3') }}
|
|
balance {{ salt['pillar.get']('haproxy:defaults:balance', 'roundrobin') }}
|
|
{%- if 'options' in salt['pillar.get']('haproxy:defaults', {}) %}
|
|
{%- for option in salt['pillar.get']('haproxy:defaults:options') %}
|
|
option {{ option }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'timeouts' in salt['pillar.get']('haproxy:defaults', {}) %}
|
|
{%- for timeout in salt['pillar.get']('haproxy:defaults:timeouts') %}
|
|
timeout {{ timeout }}
|
|
{%- endfor %}
|
|
{%- else %}
|
|
timeout client 1m
|
|
timeout connect 10s
|
|
timeout server 1m
|
|
{%- endif %}
|
|
{%- if 'errorfiles' in salt['pillar.get']('haproxy:defaults', {}) %}
|
|
{%- for errorfile in salt['pillar.get']('haproxy:defaults:errorfiles').iteritems() %}
|
|
errorfile {{ errorfile[0] }} {{ errorfile[1] }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'listens' in salt['pillar.get']('haproxy', {}) %}
|
|
|
|
|
|
#------------------
|
|
# listen instances
|
|
#------------------
|
|
{%- for listener in salt['pillar.get']('haproxy:listens', {}).iteritems() %}
|
|
listen {{ listener[1].get('name', listener[0]) }}
|
|
{%- if 'bind' in listener[1] %}
|
|
{%- if listener[1].bind[1] is defined and listener[1].bind[1]|length > 1 %}
|
|
{%- for socket in listener[1].bind %}
|
|
bind {{ socket }}
|
|
{%- endfor %}
|
|
{%- elif listener[1].bind[0]|length > 1 %}
|
|
bind {{ listener[1].bind[0] }}
|
|
{%- else %}
|
|
bind {{ listener[1].bind }}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- if 'redirects' in listener[1] %}
|
|
{%- for front_redirect in listener[1].redirects %}
|
|
redirect {{ front_redirect }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'acls' in listener[1] %}
|
|
{%- for acl in listener[1].acls %}
|
|
acl {{ acl }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'reqadd' in listener[1] %}
|
|
{%- for reqadd in listener[1].reqadd %}
|
|
reqadd {{ reqadd }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'default_backend' in listener[1] %}
|
|
default_backend {{ listener[1].default_backend }}
|
|
{% endif %}
|
|
{%- if 'use_backends' in listener[1] %}
|
|
{%- for use_backend in listener[1].use_backendsi %}
|
|
use_backend {{ use_backend }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'balance' in listener[1] %}
|
|
balance {{ listener[1].balance }}
|
|
{% endif %}
|
|
{%- if 'options' in listener[1] %}
|
|
{%- for option in listener[1].options %}
|
|
option {{ option }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'cookie' in listener[1] %}
|
|
cookie {{ listener[1].cookie }}
|
|
{% endif %}
|
|
{%- if 'stats' in listener[1] %}
|
|
{%- for option, value in listener[1].stats.iteritems() %}
|
|
{%- if option == 'enable' and value %}
|
|
stats enable
|
|
{% else %}
|
|
stats {{ option }} {{ value }}
|
|
{% endif %}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'appsession' in listener[1] %}
|
|
appsession {%- for option in listener[1].appsession %} {{ option }} {%- endfor %}
|
|
{% endif %}
|
|
{%- if 'defaultserver' in listener[1] %}
|
|
default-server {%- for option, value in listener[1].defaultserver.iteritems() %} {{ ' '.join((option, value|string, '')) }} {%- endfor %}
|
|
{% endif %}
|
|
{%- if 'servers' in listener[1] %}
|
|
{%- for server in listener[1].servers.iteritems() %}
|
|
server {{ server[1].get('name',server[0]) }} {{ server[1].host }}:{{ server[1].port }} {{ server[1].check }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'frontends' in salt['pillar.get']('haproxy', {}) %}
|
|
|
|
|
|
#------------------
|
|
# frontend instances
|
|
#------------------
|
|
{%- for frontend in salt['pillar.get']('haproxy:frontends', {}).iteritems() %}
|
|
frontend {{ frontend[1].get('name', frontend[0]) }}
|
|
{%- if 'bind' in frontend[1] %}
|
|
{%- if frontend[1].bind[1] is defined and frontend[1].bind[1]|length > 1 %}
|
|
{%- for socket in frontend[1].bind %}
|
|
bind {{ socket }}
|
|
{%- endfor %}
|
|
{%- elif frontend[1].bind[0]|length > 1 %}
|
|
bind {{ frontend[1].bind[0] }}
|
|
{%- else %}
|
|
bind {{ frontend[1].bind }}
|
|
{%- endif %}
|
|
{%- endif %}
|
|
{%- if 'redirects' in frontend[1] %}
|
|
{%- for front_redirect in frontend[1].redirects %}
|
|
redirect {{ front_redirect }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'acls' in frontend[1] %}
|
|
{%- for acl in frontend[1].acls %}
|
|
acl {{ acl }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'reqadd' in frontend[1] %}
|
|
{%- for reqadd in frontend[1].reqadd %}
|
|
reqadd {{ reqadd }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'default_backend' in frontend[1] %}
|
|
default_backend {{ frontend[1].default_backend }}
|
|
{% endif %}
|
|
{%- if 'use_backends' in frontend[1] %}
|
|
{%- for use_backend in frontend[1].use_backends %}
|
|
use_backend {{ use_backend }}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'backends' in salt['pillar.get']('haproxy', {}) %}
|
|
|
|
|
|
#------------------
|
|
# backend instances
|
|
#------------------
|
|
{%- for backend in salt['pillar.get']('haproxy:backends', {}).iteritems() %}
|
|
backend {{ backend[1].get('name',backend[0]) }}
|
|
{%- if 'redirects' in backend[1] %}
|
|
{%- for redirect in backend[1].redirects %}
|
|
redirect {{ redirect }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'balance' in backend[1] %}
|
|
balance {{ backend[1].balance }}
|
|
{%- endif %}
|
|
{%- if 'options' in backend[1] %}
|
|
{%- for option in backend[1].options %}
|
|
option {{ option }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'cookie' in backend[1] %}
|
|
cookie {{ backend[1].cookie }}
|
|
{% endif %}
|
|
{%- if 'stats' in backend[1] %}
|
|
{%- for option, value in backend[1].stats.iteritems() %}
|
|
{%- if option == 'enable' and value %}
|
|
stats enable
|
|
{% else %}
|
|
stats {{ option }} {{ value }}
|
|
{% endif %}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- if 'defaultserver' in backend[1] %}
|
|
default-server {%- for option, value in backend[1].defaultserver.iteritems() %} {{ ' '.join((option, value|string, '')) }} {%- endfor %}
|
|
{%- endif %}
|
|
{%- if 'servers' in backend[1] %}
|
|
{%- for server in backend[1].servers.iteritems() %}
|
|
server {{ server[1].get('name',server[0]) }} {{ server[1].host }}:{{ server[1].port }} {{ server[1].check }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
{%- endfor %}
|
|
{%- endif %}
|