commit
6f0609ee2e
2 changed files with 177 additions and 57 deletions
|
@ -6,9 +6,9 @@
|
||||||
# Any changes will be overwritten.
|
# Any changes will be overwritten.
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
# Global settings
|
# Global settings
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
global
|
global
|
||||||
log /dev/log local0
|
log /dev/log local0
|
||||||
log /dev/log local1 notice
|
log /dev/log local1 notice
|
||||||
|
@ -16,8 +16,8 @@ global
|
||||||
group {{ salt['pillar.get']('haproxy:global:group', 'haproxy') }}
|
group {{ salt['pillar.get']('haproxy:global:group', 'haproxy') }}
|
||||||
{%- if salt['pillar.get']('haproxy:global:chroot:enable', 'no') == True %}
|
{%- if salt['pillar.get']('haproxy:global:chroot:enable', 'no') == True %}
|
||||||
chroot {{ salt['pillar.get']('haproxy:global:chroot:path', '/tmp') }}
|
chroot {{ salt['pillar.get']('haproxy:global:chroot:path', '/tmp') }}
|
||||||
{%- endif -%}
|
{% endif %}
|
||||||
{% if salt['pillar.get']('haproxy:global:daemon', 'no') == True %}
|
{%- if salt['pillar.get']('haproxy:global:daemon', 'no') == True %}
|
||||||
daemon
|
daemon
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{%- if salt['pillar.get']('haproxy:global:stats:enable', 'no') == True %}
|
{%- if salt['pillar.get']('haproxy:global:stats:enable', 'no') == True %}
|
||||||
|
@ -25,10 +25,10 @@ global
|
||||||
stats socket {{ salt['pillar.get']('haproxy:global:stats:socketpath', '/tmp/ha_stats.sock') }}
|
stats socket {{ salt['pillar.get']('haproxy:global:stats:socketpath', '/tmp/ha_stats.sock') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
# common defaults that all the 'listen' and 'backend' sections will
|
# common defaults that all the 'listen' and 'backend' sections will
|
||||||
# use if not designated in their block
|
# use- if not designated in their block
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
defaults
|
defaults
|
||||||
log {{ salt['pillar.get']('haproxy:defaults:log') }}
|
log {{ salt['pillar.get']('haproxy:defaults:log') }}
|
||||||
mode {{ salt['pillar.get']('haproxy:defaults:mode') }}
|
mode {{ salt['pillar.get']('haproxy:defaults:mode') }}
|
||||||
|
@ -51,73 +51,163 @@ defaults
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
#------------------
|
||||||
|
# listen instances
|
||||||
|
#------------------
|
||||||
|
{%- if 'listens' in salt['pillar.get']('haproxy', {}) %}
|
||||||
|
{%- 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 %}
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
# frontend instances
|
# frontend instances
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
{%- if 'frontends' in salt['pillar.get']('haproxy', {}) %}
|
{%- if 'frontends' in salt['pillar.get']('haproxy', {}) %}
|
||||||
{%- for frontend in salt['pillar.get']('haproxy:frontends', {}).iteritems() %}
|
{%- for frontend in salt['pillar.get']('haproxy:frontends', {}).iteritems() %}
|
||||||
frontend {{ frontend[1].get(name, frontend[0]) }}
|
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 }}
|
bind {{ frontend[1].bind }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endif %}
|
||||||
{%- if 'redirects' in frontend[1] %}
|
{%- if 'redirects' in frontend[1] %}
|
||||||
{%- for front_redirect in frontend[1].redirects %}
|
{%- for front_redirect in frontend[1].redirects %}
|
||||||
redirect {{ front_redirect }}
|
redirect {{ front_redirect }}
|
||||||
{% endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- if 'acls' in frontend[1] %}
|
{%- if 'acls' in frontend[1] %}
|
||||||
{%- for acl in frontend[1].acls %}
|
{%- for acl in frontend[1].acls %}
|
||||||
acl {{ acl }}
|
acl {{ acl }}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- if 'reqadd' in frontend[1] %}
|
{%- if 'reqadd' in frontend[1] %}
|
||||||
{%- for reqadd in frontend[1].reqadd %}
|
{%- for reqadd in frontend[1].reqadd %}
|
||||||
reqadd {{ reqadd }}
|
reqadd {{ reqadd }}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
|
{%- if 'default_backend' in frontend[1] %}
|
||||||
default_backend {{ frontend[1].default_backend }}
|
default_backend {{ frontend[1].default_backend }}
|
||||||
{%-if 'use_backends' in frontend[1] -%}
|
{% endif %}
|
||||||
|
{%- if 'use_backends' in frontend[1] %}
|
||||||
{%- for use_backend in frontend[1].use_backends %}
|
{%- for use_backend in frontend[1].use_backends %}
|
||||||
use_backend {{ use_backend }}
|
use_backend {{ use_backend }}
|
||||||
{% endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
# backend instances
|
# backend instances
|
||||||
#---------------------------------------------------------------------
|
#------------------
|
||||||
{%- if 'backends' in salt['pillar.get']('haproxy', {}) %}
|
{%- if 'backends' in salt['pillar.get']('haproxy', {}) %}
|
||||||
{%- for backend in salt['pillar.get']('haproxy:backends', {}).iteritems() %} # Backend loop start
|
{%- for backend in salt['pillar.get']('haproxy:backends', {}).iteritems() %}
|
||||||
backend {{ backend[1].get(name, backend[0]) }}
|
backend {{ backend[1].get('name',backend[0]) }}
|
||||||
{%- if 'redirects' in backend[1] %}
|
{%- if 'redirects' in backend[1] %}
|
||||||
{%- for redirect in backend[1].redirects %} # Redirect loop start
|
{%- for redirect in backend[1].redirects %}
|
||||||
redirect {{ redirect }}{% endfor %}
|
redirect {{ redirect }}
|
||||||
{%- endif %}
|
{%- endfor %}
|
||||||
|
{% endif %}
|
||||||
{%- if 'balance' in backend[1] %}
|
{%- if 'balance' in backend[1] %}
|
||||||
balance {{ backend[1].balance }}
|
balance {{ backend[1].balance }}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- if 'options' in backend[1] %}
|
{%- if 'options' in backend[1] %}
|
||||||
{%- for option in backend[1].options %}
|
{%- for option in backend[1].options %}
|
||||||
option {{ option }}
|
option {{ option }}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- if 'cookie' in backend[1] %}
|
{%- if 'cookie' in backend[1] %}
|
||||||
cookie {{ backend[1].cookie }}
|
cookie {{ backend[1].cookie }}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- if 'stats' in backend[1] %}
|
{%- if 'stats' in backend[1] %}
|
||||||
{%- for option, value in backend[1].stats.iteritems() %}
|
{%- for option, value in backend[1].stats.iteritems() %}
|
||||||
{%- if option == 'enable' and value %}
|
{%- if option == 'enable' and value %}
|
||||||
stats enable
|
stats enable
|
||||||
{%- else %}
|
{% else %}
|
||||||
stats {{ option }} {{ value }}
|
stats {{ option }} {{ value }}
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{% 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] %}
|
{%- if 'servers' in backend[1] %}
|
||||||
{%- for server in backend[1].servers.iteritems() %}
|
{%- for server in backend[1].servers.iteritems() %}
|
||||||
server {{ server[1].get(name,server[0]) }} {{ server[1].host }}:{{ server[1].port }} {{ server[1].check }}{% endfor %}
|
server {{ server[1].get('name',server[0]) }} {{ server[1].host }}:{{ server[1].port }} {{ server[1].check }}
|
||||||
|
{%- endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %} # Backend loop end
|
{%- endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -44,6 +44,36 @@ haproxy:
|
||||||
503: /etc/haproxy/errors/503.http
|
503: /etc/haproxy/errors/503.http
|
||||||
504: /etc/haproxy/errors/504.http
|
504: /etc/haproxy/errors/504.http
|
||||||
|
|
||||||
|
listens:
|
||||||
|
stats:
|
||||||
|
bind:
|
||||||
|
- "0.0.0.0:8998"
|
||||||
|
mode: http
|
||||||
|
stats:
|
||||||
|
enable: True
|
||||||
|
uri: "/admin?stats"
|
||||||
|
refresh: "20s"
|
||||||
|
myservice:
|
||||||
|
bind:
|
||||||
|
- "*:8888"
|
||||||
|
options:
|
||||||
|
- forwardfor
|
||||||
|
- http-server-close
|
||||||
|
defaultserver:
|
||||||
|
slowstart: 60s
|
||||||
|
maxconn: 256
|
||||||
|
maxqueue: 128
|
||||||
|
weight: 100
|
||||||
|
servers:
|
||||||
|
web1:
|
||||||
|
host: web1.example.com
|
||||||
|
port: 80
|
||||||
|
check: check
|
||||||
|
web2:
|
||||||
|
host: web2.example.com
|
||||||
|
port: 18888
|
||||||
|
check: check
|
||||||
|
|
||||||
frontends:
|
frontends:
|
||||||
frontend1:
|
frontend1:
|
||||||
name: www-http
|
name: www-http
|
||||||
|
|
Loading…
Reference in a new issue