diff --git a/templates/upstreams.conf.j2 b/templates/upstreams.conf.j2 index 4b96fe9..ecb7123 100644 --- a/templates/upstreams.conf.j2 +++ b/templates/upstreams.conf.j2 @@ -1,8 +1,19 @@ +{% macro upstream_attribute(upstream, attr) %}{% if attr in upstream %} {{attr}}{% endif %}{% endmacro %} +{% macro upstream_attribute_value(upstream, attr) %}{% if attr in upstream %} {{attr}}={{ upstream[attr] }}{% endif %}{% endmacro %} +{% macro upstream_attributes(upstream) -%} + {%- for attr in ["resolve", "backup", "down", "drain"] -%} + {{- upstream_attribute(upstream, attr) -}} + {%- endfor -%} + {%- for attr in ["weight", "fail_timeout", "max_fails", "max_conns", "route", "service", "slow_start"] -%} + {{- upstream_attribute_value(upstream, attr) -}} + {%- endfor -%} +{%- endmacro %} + {% for upstreamname in nginx.upstreams %} {% set upstream = nginx.upstreams[upstreamname] %} upstream {{ upstreamname }} { {% for s in upstream.server %} - server {{ s.address }} {%if s.resolve|d(False) %}resolve{% endif %}; + server {{ s.address }}{{ upstream_attributes(s) }}; {% endfor %} }