{% 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 }}{{ upstream_attributes(s) }}; {% endfor %} } {% endfor %}